如何在C#中把Json key:value转换成value:value?

问题描述 投票:0回答:1

我在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);
c# json key-value
1个回答
2
投票

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

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

然后将JSON数组反序列化为 List<RootObject> 使用 Json.NET,投射对象 keytext 的键值对。Dictionary<string, string> 使用 Enumerable.Select,然后将结果序列化为 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"
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.