如何将类似对象的json对象反序列化为c#list <t>

时间:2019-05-16 11:07:05

标签: c# json json.net json-deserialization

我有这样的json响应:

{
  "val1":{
    "id":"1",
    "value":"val"
  },
  "val2":{
    "id":"2",
    "value":"otherVal"
}
}

我如何将此有效负载反序列化为SimplyObject所在的SimplyObject的通用列表

public class SimpleObject { 
   public int Id {get;set;} 
   public string Value {get;set;}
}

当我尝试将此有效负载反序列化为SimpleObject列表时,出现以下错误:

  

无法反序列化当前JSON对象(例如{“ name”:“ value”})   变成'System.Collections.Generic.List`1 [SimpleObject]'类型,因为   该类型需要JSON数组(例如[1,2,3])进行反序列化   正确地。要解决此错误,请将JSON更改为JSON数组   (例如[1,2,3])或更改反序列化类型,使其成为常规   .NET类型(例如,不是整数之类的原始类型,不是集合   可以从JSON反序列化的类型(如数组或列表)   宾语。也可以将JsonObjectAttribute添加到类型中以强制它   从JSON对象反序列化。

1 个答案:

答案 0 :(得分:3)

您可以使用Dictionary反序列化JSON,例如:

var result = JsonConvert.DeserializeObject<Dictionary<string, SimpleObject>>(json);

并像这样使用它:

foreach (var item in result)
{
    Console.WriteLine($"Item: {item.Key} has Id of {item.Value.Id} and value of {item.Value.Value}");
}