【问题标题】:How can I convert Json key:value into value:value in C#?如何在 C# 中将 Json 键:值转换为值:值?
【发布时间】:2020-05-06 19:03:45
【问题描述】:

我正在读取 C# 中的资源文件并将其转换为 JSON 字符串格式。现在我想将该 JSON 字符串的值转换为键。

例子,

[
 {
  "key": "CreateAccount",
  "text": "Create Account"
 },
 {
  "key": "EmailAddress",
  "text": "Email Address"
 }
]

所以我只想把上面的json字符串变成“Key:text”,如下所示,

[
 {
  "CreateAccount": "Create Account"
 },
 {
  "EmailAddress": "Email Address"
 }
]

我的 C#,

var obj = new
 {
   Lang=XElement.Parse(_FileDataAsText)
    .Elements("data")
    .Select(el => new
          {
                    key= el.Attribute("name").Value,
                    text = el.Element("value").Value
          }.ToList()
 };

 string json = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented);

【问题讨论】:

  • 转换成字典..
  • @Dennis,我只想制作 JSON 数据并通过 API 将其提供给我的另一个 UI 团队。所以他们将在 UI 端提取和绑定 JSON 字符串数据,因为我想制作像 'value':'value' 这样的 json 格式。无需担心反序列化部分。
  • @Harishr 是个好主意,但你能提供简单的示例代码或示例吗?
  • @Dennis,是的,我只想转换为上述格式,我会给他们。这是用于动态绑定。

标签: c# json key-value


【解决方案1】:

创建一个类来表示内部 JSON 对象:

public class RootObject
{
    public string Key { get; set; }
    public string Text { get; set; }
}

然后使用Json.NET将JSON数组反序列化为List<RootObject>,使用Enumerable.Select将对象keytext投影到Dictionary<string, string>内的键值对,然后将结果序列化为List<Dictionary<string, string>>

using Newtonsoft.Json;

...

var json = @"[{""key"": ""CreateAccount"",""text"": ""Create Account""},{""key"": ""EmailAddress"",""text"": ""Email Address""}]";

 var deserializedJson = JsonConvert
    .DeserializeObject<List<RootObject>>(json);

var result = deserializedJson
    .Select(obj => new Dictionary<string, string> { 
        { obj.Key, obj.Text } 
    })
    .ToList();

var serializedJson = JsonConvert.SerializeObject(result, Formatting.Indented);

Console.WriteLine(serializedJson);

输出:

[
  {
    "CreateAccount": "Create Account"
  },
  {
    "EmailAddress": "Email Address"
  }
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2020-08-28
    • 2015-03-23
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多