【问题标题】:Deserialize json to list of KeyValue pairs [duplicate]将json反序列化为键值对列表[重复]
【发布时间】:2018-10-21 02:44:48
【问题描述】:

我有以下 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&lt;Object&gt; 中。

【问题讨论】:

  • 不要使用JavaScriptSerializer,使用Json.NET

标签: c# json c#-6.0


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2012-03-07
    相关资源
    最近更新 更多