将 json 反序列化为对象列表
本文关键字:对象 列表 反序列化 json | 更新日期: 2023-09-27 18:31:07
我从WS那里得到了以下字符串(JSON):
{"cables":"[{'"rexelReference'":'"FIL01084259'",'"providerReference'":'"1084259'",'"productLibe'":'"CABLE BLEU D''u0027INSTRUM 01IT09EGFA'",'"brand'":'"FIL'",'"color'":'"BLEU'",'"section'":'"0,9'",'"conductorNumber'":1,'"displayProduct'":true},{'"rexelReference'":'"FIL01084386'",'"providerReference'":'"1084386'",'"productLibe'":'"CABLE BLEU D''u0027INSTRUM 01IT09EGSF'",'"brand'":'"FIL'",'"color'":'"BLEU'",'"section'":'"0,9'",'"conductorNumber'":1,'"displayProduct'":true}]","productNumber":"2"}
和这些对象:
public class ProductList
{
[JsonProperty("cables")]
public List<ProductDTO> cables { get; set; }
public int count { get; set; }
}
public class ProductDTO
{
public string rexelReference;
public string providerReference;
public string productLibe;
public string brand;
public string color;
public string section;
public string conductorNumber;
public string displayProduct;
}
当我尝试使用此代码反序列化时:
ProductList list = JsonConvert.DeserializeObject<ProductList>(wsResponse2);
我收到错误:
其他信息:将值"[{"转换为类型"System.Collections.Generic.List'1[VoltaFront.DTO.ProductDTO]"时出错。路径"电缆",第 1 行,位置 14。
我不明白这个问题。是因为反斜杠吗?我应该在反序列化之前删除它们吗?
现在编辑我得到的错误是:
*附加信息:转换值"[{"rexelReference"时出错:"FIL01084259","providerReference":"1084259","productLibe":"CABLE BLEU D''u0027INSTRUM *<</p>
你在 json 格式中遇到了问题,只需删除未使用的双引号并像下面这样使用它:
string wsResponse2 = "{'"cables'":[{'"rexelReference'":'"FIL01084259'",'"providerReference'":'"1084259'",'"productLibe'":'"CABLE BLEU D''u0027INSTRUM 01IT09EGFA'",'"brand'":'"FIL'",'"color'":'"BLEU'",'"section'":'"0,9'",'"conductorNumber'":1,'"displayProduct'":true}]}";
删除转义并放入 JSON 格式化程序后,您的 JSON 无效,并抛出异常。
删除转义
JSON 格式化程序
修复您的 JSON。这是错误消息:
Unable to format the JSON input. Expected a ',' or '}' at character 15 near 'les":"[{"rexelRefere'