这是我的模特:
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
List<InsTmpDtl> list = JsonConvert.DeserializeObject<List<InsTmpDtl>>(hidDet);
我得到如下例外:
无法将字符串转换为十进制:。路径'[1] .LimitNum',第1行, 位置170。
答案 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\"}]";
列表被反序列化没有任何问题:
根据错误消息,您的json中有空格字符串。即而不是空字符串LimitNum:""
,你有LimitNum:" "
。空字符串被视为null
,因此它已成功转换为可空小数。但是使用空格字符串JsonReader尝试将字符串解析为十进制。并且您看到"Could not convert string to decimal"
错误。