首页新闻找找看学习计划

JSON反序列化成对象出现null问题

0
悬赏园豆:5 [已解决问题] 解决于 2013-01-31 16:52

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来解析是可以的。

dotnetgeek的主页 dotnetgeek | 菜鸟二级 | 园豆:482
提问于:2013-01-31 11:10
< >
分享
最佳答案
1

很明显这串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"}}]

 

收获园豆:5
Rich.T | 老鸟四级 |园豆:3438 | 2013-01-31 11:31

但是这个Json字符是我从淘宝的页面源码采集回来的。而且我用json校验工具校验过格式没问题,可能就是用C#反序列化出现问题了,跟用Javascript反序列化要求的格式不一致吧?

dotnetgeek | 园豆:482 (菜鸟二级) | 2013-01-31 11:34

@蛊惑的我: 

淘宝的逻辑和你的不一样,如果按照这串字符串来解析的话,你对应的class应该是

public class ParentModel
{
   public Model 1{ get; set; }

   public Model 2{ get; set; }
}

Rich.T | 园豆:3438 (老鸟四级) | 2013-01-31 11:36

@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字符串进行改造啊!苦逼!

dotnetgeek | 园豆:482 (菜鸟二级) | 2013-01-31 11:43

但是,这串JSON字符串,放在JSON验证工具里面,确实是JSON格式的啊!

dotnetgeek | 园豆:482 (菜鸟二级) | 2013-03-05 14:50
其他回答(1)
0

ist<ParentModel> parentModel    你可以先序列化看看个你的那个字符串有什么区别

chenping2008 | 园豆:9836 (大侠五级) | 2013-01-31 11:23

反序列化应该支持这种A类的属性是B类吧??

支持(0) 反对(0) dotnetgeek | 园豆:482 (菜鸟二级) | 2013-01-31 11:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册