JSON字符串:
string jsonStr= "[{'1':{'skuId': '18433752423','price': '288.00','priceCent': '28800','stock': '5176'},'2': {'skuId': '18433752424','price': '288.00','priceCent': '28800','stock': '5048'}}]";
相应的,根据Json字符串各属性的关系,建立Model类:(请问这里没建错吧?ID下面是对应一个对象,如果建错,请告知我!!)
public class ParentModel
{
public string ID { get; set; }
public Model EntModel { get; set; }
}
public class Model
{
public string skuId { get; set; }
public string price { get; set; }
public string priceCent { get; set; }
public string stock { get; set; }
}
最后因为是winform环境,所以添加第三方Json解析类库:using Newtonsoft.Json;
具体解析的代码是:
List<ParentModel> parentModel = JsonConvert.DeserializeObject<List<ParentModel>>(jsonStr);
效果:执行代码发现,List.Count =1 但是属性都是为null。。而我尝试把 '1':{},'2':{}中的1,2去掉,也就是说把ID去掉,修改model来解析是可以的。
很明显这串json问题大把,注意红字
[{"ID":"1","EntModel":{"skuId":"18433752423","price":"288.00","priceCent":"28800","stock":"5176"}},{"ID":"2","EntModel":{"skuId":"18433752423","price":"288.00","priceCent":"28800","stock":"5176"}}]
但是这个Json字符是我从淘宝的页面源码采集回来的。而且我用json校验工具校验过格式没问题,可能就是用C#反序列化出现问题了,跟用Javascript反序列化要求的格式不一致吧?
@蛊惑的我:
淘宝的逻辑和你的不一样,如果按照这串字符串来解析的话,你对应的class应该是
public class ParentModel
{
public Model 1{ get; set; }
public Model 2{ get; set; }
}
@Rich.T:
按照你这种方法,给几个没有键的值加上了Key,反序列化就成功了。
string jsonStr = "[{'ID':'1','EntModel':{'skuId': '18433752423','price': '288.00','priceCent':'28800','stock':'5176'}},{'ID':'2','EntModel': {'skuId': '18433752424','price': '288.00','priceCent': '28800','stock': '5048'}}]";
哎,那接下来还要对采集回来的json字符串进行改造啊!苦逼!
但是,这串JSON字符串,放在JSON验证工具里面,确实是JSON格式的啊!
ist<ParentModel> parentModel 你可以先序列化看看个你的那个字符串有什么区别
反序列化应该支持这种A类的属性是B类吧??