{
11:{
aa:{对象属性}
},
31:{
dd:{对象属性}
}
}
代码实例
{ "1001": { "id": 1001, "name": "速度之靴", "description": "<unique>唯一被动—强化移动:</unique>+25移动速度 <i>(同名的唯一被动效果不叠加。)</i>", "price": 325, "icon": "/content/item/1001.png", "children": [], "parents": ["3006", "3047", "3020", "3158", "3111", "3117", "3009"], "requiredchampion": "", "restrictedmaps": [], "tags": ["movement", "boots"] }, "1004": { "id": 1004, "name": "仙女护符", "description": "<stats>+3法力回复/5秒</stats>", "price": 180, "icon": "/content/item/1004.png", "children": [], "parents": ["3037", "3096", "3028", "3070", "3073", "1080"], "requiredchampion": "", "restrictedmaps": [], "tags": ["mana_regen"] }, "1006": { "id": 1006, "name": "治疗宝珠", "description": "<stats>+5生命回复/5秒</stats>", "price": 180, "icon": "/content/item/1006.png", "children": [], "parents": ["3077", "3097", "3096", "3083", "3190", "1080"], "requiredchampion": "", "restrictedmaps": [], "tags": ["health_regen"] }, "1011": { "id": 1011, "name": "巨人腰带", "description": "<stats>+380生命值</stats>", "price": 1000, "icon": "/content/item/1011.png", "children": [], "parents": ["3083", "3022", "3068", "3116", "3084"], "requiredchampion": "", "restrictedmaps": [], "tags": ["health"] }, "1018": { "id": 1018, "name": "灵巧披风", "description": "<stats>+15%暴击几率</stats>", "price": 730, "icon": "/content/item/1018.png", "children": [], "parents": ["3046", "3031", "3122"], "requiredchampion": "", "restrictedmaps": [], "tags": ["critical_strike"] }, "1026": { "id": 1026, "name": "爆裂魔杖", "description": "<stats>+40法术强度</stats>", "price": 860, "icon": "/content/item/1026.png", "children": [], "parents": ["3001", "3135", "3027", "3029", "3089", "3100", "3116", "3124"], "requiredchampion": "", "restrictedmaps": [], "tags": ["spell_damage"] }}
是不是要自己去写反序列化 不能用 JsonConvert.DeserializeObject来反序列化
有对应的实体类吗?
问题已补充
@王大湿: 用Json.NET可以轻松搞定
@dudu: 关键就是我不知道怎么搞定 JsonConvert.DeserializeObject<List<model.equip>>(json);的话就报错 有实例代码让我看看吗?或者文章
@王大湿: 报什么错误?
@dudu:
Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[Lol_Phone_Web.model.equip]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path '1001', line 2, position 9.
@王大湿: 这个对应的类型不是List,是key/value,试试:
JsonConvert.DeserializeObject<Dictionary<string, model.equip>>(json);
@dudu: 刚吃饭去了 可以 的 谢谢
1. json 的格式有问题, 应该是这样的格式: {11:{aa:"cc"},31:{dd:"ee"}}
2. 如果json格式没问题,正常是通过与之对应的实体进行转换
3. 如果没有与之对应的实体,也可以使用 dynamic 进行转换
我把问题补充了下 您可以看看
@王大湿:
直接这样 dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString);
不行吗
@Yu: 这样就可以了
var stuff = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, Stuff>>(json);
public class Stuff {
public int id {get;set;}
public string name{get;set;}
public string description{get;set;}
public float price{get;set;}
public string icon{get;set;}
public string [] children {get;set;}
public string [] parents {get;set;}
public string requiredchampion{get;set;}
public string [] restrictedmaps {get;set;}
public string[] tags { get; set; }
}
@Yu: 嗯 谢谢