当值为空时,如何使用JsonConverter反序列化json?

时间:2014-04-23 06:55:41

标签: c# json

这是我的模特:

public class InsTmpDtl
{                
    public int ID { get; set;}
    public int MainId { get; set;}
    public string ItemName { get; set;}
    public string ItemBasis { get; set;}
    public string ItemUnit { get; set;}
    public int TechRequireType { get; set;}
    public decimal? LimitNum { get; set;}
    public string ItemRemark { get; set;}
}

这是json:

  

[{ITEMNAME: “CCC”,ItemBasis: “1”,ItemUnit: “1”,TechRequireType: “1”,LimitNum: “1”,ItemRemark: “22”},{ITEMNAME: “ASDF”,ItemBasis : “DC”,ItemUnit: “2”,TechRequireType: “1”,LimitNum: “”,ItemRemark: “22”}]

当我使用JsonConvert

反序列化json时
List<InsTmpDtl> list = JsonConvert.DeserializeObject<List<InsTmpDtl>>(hidDet);

我得到如下例外:

  

无法将字符串转换为十进制:。路径'[1] .LimitNum',第1行,   位置170。

1 个答案:

答案 0 :(得分:0)

给定InstTmpDtl类型的定义和此示例json:

string hidDet = "[{ItemName:\"ccc\",ItemBasis:\"1\",ItemUnit:\"1\",TechRequireType:\"1\",LimitNum:\"1\",ItemRemark:\"22\"},{ItemName:\"asdf\",ItemBasis:\"dc\",ItemUnit:\"2\",TechRequireType:\"1\",LimitNum:\"\",ItemRemark:\"22\"}]";

列表被反序列化没有任何问题:

enter image description here

根据错误消息,您的json中有空格字符串。即而不是空字符串LimitNum:"",你有LimitNum:" "。空字符串被视为null,因此它已成功转换为可空小数。但是使用空格字符串JsonReader尝试将字符串解析为十进制。并且您看到"Could not convert string to decimal"错误。