将 json 反序列化为键值对列表
Deserialize json to list of KeyValue pairs
我有以下 json:
[
{
"key":"key1",
"value":"val1"
},
{
"key":"key2",
"value":"val2"
}
]
如何将它反序列化为 NameValuePair<string, string>
的 list/array?
示例:
var json = "[{\"key\":\"key1\",\"value\":\"val1\"},{\"key\":\"key2\",\"value\":\"val2\"}]";
var serializer = new JavaScriptSerializer();
var result = serializer.Deserialize<List<KeyValuePair<string,string>>>(json);
上面的代码运行但是列表里面的数据是null
。不过,我可以将数组提取到 List<Object>
中。
首先,你不应该使用JavaScriptSerializer
,微软甚至明确表示in the JavaScriptSerializer docs。
要反序列化 Json.NET 中的对象,语法非常相似:
var json = "[{\"key\":\"key1\",\"value\":\"val1\"},{\"key\":\"key2\",\"value\":\"val2\"}]";
var result = JsonConvert.DeserializeObject<List<KeyValuePair<string,string>>>(json);
Fiddle here
更新
如果您使用的是 .NET Core 3/.NET 5 或 .NET 6,则包含 System.Text.Json 库而无需额外的依赖项。
使用该库反序列化的语法是:
var result = JsonSerializer.Deserialize<List<KeyValuePair<string,string>>>(jsonString);
我有以下 json:
[
{
"key":"key1",
"value":"val1"
},
{
"key":"key2",
"value":"val2"
}
]
如何将它反序列化为 NameValuePair<string, string>
的 list/array?
示例:
var json = "[{\"key\":\"key1\",\"value\":\"val1\"},{\"key\":\"key2\",\"value\":\"val2\"}]";
var serializer = new JavaScriptSerializer();
var result = serializer.Deserialize<List<KeyValuePair<string,string>>>(json);
上面的代码运行但是列表里面的数据是null
。不过,我可以将数组提取到 List<Object>
中。
首先,你不应该使用JavaScriptSerializer
,微软甚至明确表示in the JavaScriptSerializer docs。
要反序列化 Json.NET 中的对象,语法非常相似:
var json = "[{\"key\":\"key1\",\"value\":\"val1\"},{\"key\":\"key2\",\"value\":\"val2\"}]";
var result = JsonConvert.DeserializeObject<List<KeyValuePair<string,string>>>(json);
Fiddle here
更新
如果您使用的是 .NET Core 3/.NET 5 或 .NET 6,则包含 System.Text.Json 库而无需额外的依赖项。
使用该库反序列化的语法是:
var result = JsonSerializer.Deserialize<List<KeyValuePair<string,string>>>(jsonString);