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,
            }
        }
    }
}

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
            }
        }
    }
}

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

问题是item_name可以被命名为不同的(item_name_1, _2…

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

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

(表示"data":节点)

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

public class MyRootObject {
    public string type {get;set;}
    public string version {get;set;}
    public Dictionary<string, Item> data {get;set;}
}
pulic class Item {
    public int id {get;set;}
    public string key {get;set;}
    public string name {get;set;}
    public string title {get;set;}
    public Dictionary<string,int> info {get;set;}
}

相关内容

  • 没有找到相关文章

最新更新