C# JSON反序列化为KeyValuePair返回{null,null}
我在JSON中声明了以下键:值对: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
"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; }