我正在使用 Nest 查询使用 Newtonsoft.Json 与相应属性绑定(bind)的数据。
下面是一个没有填充 JSON 数据的类的属性。
[JsonExtensionData]
IDictionary<long, ICollection<Tuple<string, byte[ ]>>> ImageMap { get; set; }
然而,其他人是正确绑定(bind)的。 我正在使用 Newtonsoft.Json 7.0.1。
最佳答案
问题是您正在使用 [JsonExtensionData]
属性不当。 [JsonExtensionData]
旨在用于从您未在类中明确定义属性的 JSON 中捕获额外数据。要正确使用它,您类(class)中的字典必须声明为 Dictionary<string, object>
。或 Dictionary<string, JToken>
. (有关简单示例,请参见 How to serialize a Dictionary as part of its parent object using Json.Net。)
但是,在您的情况下,您有一个非常具体的 ImageMap
您类中的属性,旨在从相应的 imageMap
中捕获数据JSON 中的属性。这根本不适合扩展数据的用例。删除 [JsonExtensionData]
属性并将其替换为 [JsonProperty("imageMap")]
;那么它应该正确反序列化。
[JsonProperty("imageMap")]
public IDictionary<long, ICollection<Tuple<string, byte[]>>> ImageMap { get; set; }
fiddle :https://dotnetfiddle.net/05J7Wo
关于c# - JSON 数据在反序列化期间未与 Dictionary 属性绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34409043/