尝试使用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;}
}