c# - JSON 数据在反序列化期间未与 Dictionary 属性绑定(bind)

标签 c# json elasticsearch json.net nest

我正在使用 Nest 查询使用 Newtonsoft.Json 与相应属性绑定(bind)的数据。

下面是一个没有填充 JSON 数据的类的属性。

[JsonExtensionData]
IDictionary<long, ICollection<Tuple<string, byte[ ]>>> ImageMap { get; set; }

然而,其他人是正确绑定(bind)的。 我正在使用 Newtonsoft.Json 7.0.1。

enter image description here

最佳答案

问题是您正在使用 [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/

相关文章:

c# - WPF 按钮动态命令

java - 在更新字段之前等待 JSON 响应完成

c# - 来自基类构造函数的虚函数

c# - 如何使用单个查询将数据集中的多条记录插入到 SQL Server 2005 中?

php - 创建一个 cron 以自动启动数据库播种器

javascript - 没有 jQuery 的 JSON

java - 使用 java 、Redis、Elastic Search 、Mongo 自动完成

elasticsearch - 用 bool 过滤器替换OR/AND/NOT过滤器会创建一个难以理解的查询,其中包含太多的级别?

python - 具有特定输出的 Elasticsearch DSL 查询

c# 从 messagebox.show popup 中选择文本