将 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 反序列化为对象列表

你在 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'