【发布时间】:2017-02-11 04:22:27
【问题描述】:
使用 Json.NET,我想将 JObject 映射到具有以下行为的 .NET 对象:
对于
JObject的(非空)数组属性,替换目标对象上的整个集合。对于
JObject的(非空)对象属性,如果它不为空,则重用目标对象的属性,并将提供的属性映射到其上。
JsonSerializer.Populate 似乎是我想要的,如this answer 中所述。至于我正在寻找的行为,我似乎可以通过JsonSerializerSettings.ObjectCreationHandling 实现其中之一,但不能同时实现两者。 ObjectCreationHandling.Replace 根据要求 #1 执行我想要的操作,而 ObjectCreationHandling.Auto 对于要求 #2 执行我想要执行的操作,但是它将数组项附加到现有集合中。
这里推荐的实现这两个要求的方法是什么?
【问题讨论】:
-
应该注意的是,JObject.Merge 提供了一种通过MergeArrayHandling 配置数组行为的好方法。但这是针对 JObject 到 JObject 的映射,而不是 JObject 到 .NET 对象。很遗憾,此设置在 JsonSerializerSettings 中不可用。