Json.net反序列化到类

时间:2014-08-13 08:12:14

标签: c# .net json.net

尝试使用json.net反序列化json字符串的这种和平,但是在反序列化时我总是会遇到异常。任何人都可以帮我设置类,以便反序列化。

由于

{
    "type":"some_type",
    "version":"0.1",
    "data":
    {
        "item_name_1":
        {
            "id":266,
            "key":"aaa",
            "name":"aaa",
            "title":"title_1",
            "info":
            {
                "property_1":9,
                "property_2":4,
            }
        },
        "item_name_2":
        {
            "id":266,
            "key":"bbb",
            "name":"bbb",
            "title":"title_2",
            "info":
            {
                "property_1":93,
                "property_2":24,
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

info的最后一个属性之后有一个逗号(,),这不应该存在。 我总是使用jsonlint来检查我的json对象中是否有任何错误。

{
    "type":"some_type",
    "version":"0.1",
    "data":
    {
        "item_name_1":
        {
            "id":266,
            "key":"aaa",
            "name":"aaa",
            "title":"title_1",
            "info":
            {
                "property_1":9,
                "property_2":4
            }
        },
        "item_name_2":
        {
            "id":266,
            "key":"bbb",
            "name":"bbb",
            "title":"title_2",
            "info":
            {
                "property_1":93,
                "property_2":24
            }
        }
    }
}

答案 1 :(得分:0)

如果我们忽略逗号,这显然是一个错字

  

问题是因为item_name可以命名为different(item_name_1,_2 ......

是的,这是完全正确的;名字需要匹配。如果您需要映射匹配的内容,您需要 提供自定义转换器,或者(通常更简单)将数据映射到字典中 - 即你可能有:

public Dictionary<string, Item> data {get;set;}

(代表"data":节点)

这将产生键值对,其中每个键是字段名称("item_name_1"等),每个值都是Item实例(具有属性id,{ {1}},key等。)

name