我在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);
创建一个类来表示内部的JSON对象。
public class RootObject
{
public string Key { get; set; }
public string Text { get; set; }
}
然后将JSON数组反序列化为 List<RootObject>
使用 Json.NET,投射对象 key
和 text
的键值对。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"
}
]