将json反序列化为对象列表

时间:2016-01-20 16:18:06

标签: c# json serialization

我从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);

我收到错误:

  

其他信息:转换值时出错&#34; [{&#34;输入&#39; System.Collections.Generic.List`1 [VoltaFront.DTO.ProductDTO]&#39;。路径&#39;电缆&#39;,第1行,第14位。

我不明白这个问题。是因为反斜杠?我想在反序列化之前删除它们吗?

现在编辑我得到的错误是:

  

*附加信息:转换值时出错&#34; [{&#34; rexelReference&#34;:&#34; FIL01084259&#34;,&#34; providerReference&#34;:&#34; 1084259&#34 ;,&#34; productLibe&#34;:&#34; CABLE BLEU D \ u0027INSTRUM *&lt;

2 个答案:

答案 0 :(得分:2)

你有一个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}]}";

答案 1 :(得分:0)

在删除转义并放入JSON格式化程序后,您的Json无效,并抛出异常。

Removing Escape

JSON Formatter

修复您的JSON。这是错误消息:

Unable to format the JSON input. Expected a ',' or '}' at character 15 near 'les":"[{"rexelRefere'