将json反序列化为KeyValue对列表

eaf3rand  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(164)

下面是JSON:

[
   {
      "key":"key1",
      "value":"val1"
   },
   {
      "key":"key2",
      "value":"val2"
   }
]

如何将其反序列化为NameValuePair<string, string>的列表/数组?
示例:

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>中。

5f0d552i

5f0d552i1#

首先,你不应该使用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);

小提琴here

更新

如果您使用的是.NET Core 3 / .NET 5或.NET 6,则包含System.Text.Json库,而不包含其他依赖项。
使用该库进行反序列化的语法为:

var result =  JsonSerializer.Deserialize<List<KeyValuePair<string,string>>>(jsonString);

相关问题