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

C# JSON反序列化为KeyValuePair返回{null,null},c#,generics,.net-core,json.net,C#,Generics,.net Core,Json.net,我在JSON中声明了以下键:值对: "saleParameters": [ {"saleName":"FlashSale2018"}, ] 我在合同类中使用以下属性映射上述内容: [JsonProperty("saleParameters")] public IEnumerable<KeyValuePair<string,string>> SaleParameters { get; set; } [JsonProperty(“sal

我在JSON中声明了以下键:值对:

"saleParameters": [
        {"saleName":"FlashSale2018"},
  ]
我在合同类中使用以下属性映射上述内容:

    [JsonProperty("saleParameters")]
    public IEnumerable<KeyValuePair<string,string>> SaleParameters { get; set; }
[JsonProperty(“saleParameters”)]
公共IEnumerable参数{get;set;}
但由于某些原因,在反序列化之后,我总是在SaleParameters中接收空值。我使用NewtonSoft.JSON进行JSON序列化/反序列化,代码运行在.NETCore上

你知道为什么会发生这种情况以及如何解决吗?

问题在于:

你应该改用字典:

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

这将按键反序列化“saleName”,按值反序列化“FlashSale2018”。如果您确实需要
IEnumerable
,可以调用
SaleParameters.SelectMany(p=>p)。ToEnumerable()

。你的钥匙是独一无二的吗?对不起,我没拿到。如果它在该编辑器中工作,为什么不使用上述格式?实际上,由于外部JSON容器是一个数组,它需要是
public IEnumerable SaleParameters{get;set;}
。然后可以执行SaleParameters.SelectMany(d=>d.ToList()获取一个平面列表。@dbc Oops。是的。
public IEnumerable<IDictionary<string,string>> SaleParameters { get; set; }