elasticsearch,json.net,nest,C#,Json,elasticsearch,Json.net,Nest" /> elasticsearch,json.net,nest,C#,Json,elasticsearch,Json.net,Nest" />

C# 反序列化期间,JSON数据未与Dictionary属性绑定

C# 反序列化期间,JSON数据未与Dictionary属性绑定,c#,json,elasticsearch,json.net,nest,C#,Json,elasticsearch,Json.net,Nest,我使用Nest查询数据,这些数据使用Newtonsoft.Json绑定到相应的属性 下面是未填充JSON数据的类的属性 [JsonExtensionData] IDictionary<long, ICollection<Tuple<string, byte[ ]>>> ImageMap { get; set; } [JsonExtensionData] IDictionary ImageMap{get;set;} 然而,其他人的约束是正确的。 我正在使用N

我使用Nest查询数据,这些数据使用Newtonsoft.Json绑定到相应的属性

下面是未填充JSON数据的类的属性

[JsonExtensionData]
IDictionary<long, ICollection<Tuple<string, byte[ ]>>> ImageMap { get; set; }
[JsonExtensionData]
IDictionary ImageMap{get;set;}
然而,其他人的约束是正确的。 我正在使用Newtonsoft.Json 7.0.1


问题在于您不正确地使用了
[JsonExtensionData]
属性
[JsonExtensionData]
用于从JSON中捕获额外数据,您没有在类中明确定义这些数据的属性。要正确使用它,类中的字典必须声明为
字典
字典
。(有关简单示例,请参见。)

但是,在您的示例中,类中有一个非常特定的
ImageMap
属性,用于从JSON中相应的
ImageMap
属性捕获数据。这根本不适合扩展数据的用例。删除
[JsonExtensionData]
属性,并将其替换为
[JsonProperty(“imageMap”)]
;然后它应该正确地反序列化

[JsonProperty("imageMap")]
public IDictionary<long, ICollection<Tuple<string, byte[]>>> ImageMap { get; set; }
[JsonProperty(“imageMap”)]
公共IDictionary ImageMap{get;set;}

Fiddle:

请编辑您的问题,以包含您试图反序列化的JSON。感谢您解释JsonExtentionData的正确用法。