JSON反序列化为KeyValuePair返回{null,null}

时间:2018-10-04 04:20:23

标签: c# generics .net-core json.net

我已经在JSON中声明了以下key:value对:

"saleParameters": [
        {"saleName":"FlashSale2018"},
  ]

我正在合约类中使用以下属性映射以上内容:

    [JsonProperty("saleParameters")]
    public IEnumerable<KeyValuePair<string,string>> SaleParameters { get; set; }

但是由于某种原因,我在反序列化之后总是在SaleParameters中收到空值。我正在使用NewtonSoft.JSON进行JSON序列化/反序列化,代码在.net核心上运行。

关于为什么发生这种情况以及如何解决这个问题的任何想法吗?

1 个答案:

答案 0 :(得分:2)

问题在于您的current code expects JSON like this

"saleParameters": [
    {"Key": "saleName", "Value": "FlashSale2018"}]
]

您应该改用字典:

public IEnumerable<IDictionary<string,string>> SaleParameters { get; set; }

这将反序列化“ saleName”作为它们的键,并将“ FlashSale2018”作为值。而且,如果您确实需要IEnumerable<KeyValuePair<string, string>>,可以致电SaleParameters.SelectMany(p => p). ToEnumerable()