使用javascriptserializer进行反序列化会在找到相同的字段名称时抛出异常

时间:2017-06-07 09:39:14

标签: c# json

我正在尝试反序列化一个json文件,并将值存储在一组类中声明的变量中。 json文件位于

之下
 {
   "name"         : "sectionname",
   "section"      : 44,
   "comment"      : "Example ,
   "dimensions"   : [
      {  
         "name"      : "rtfss",
         "elements"  : 34,
         "comment"   : "sdada"
      },
 ]
}

我无法反序列化json,因为有两个名称和注释字段。如何解决这个问题?我无法更改json中的数据。请帮助。

1 个答案:

答案 0 :(得分:1)

您需要创建一个嵌套的对象,以包含dimensions集合中的数据。

public class Dimension
{
    public string name { get; set; }
    public int elements { get; set; }
    public string comment { get; set; }
}

public class MyObject
{
    public string name { get; set; }
    public int section { get; set; }
    public string comment { get; set; }
    public List<Dimension> dimensions { get; set; }
}

然后,您可以将Json中的数据反序列化为MyObject

有像这样的在线工具json2csharp。你可以给它你的Json然后它会为你生成c#类。

在旁注中,您提供的Json确实有错误。 "Example"缺少结束引号。

然后,您可以使用您想要进行反序列化的任何序列化工具。

var deserialisedObject = JsonConvert.Deserialise<MyObject>(jsonString);