Newtonsoft.Json Union和Replace同时进行

时间:2018-09-03 12:13:39

标签: c# json asp.net-core json.net

我正在尝试合并两个JSON文件,我需要添加对象/子对象(嵌套四到五个级别),该对象/子对象不存在,但是如果它们已经存在,则将其覆盖。

到目前为止,我得到了:

var target = File.ReadAllText(filePath);
JObject sourceJObject = JsonConvert.DeserializeObject<JObject>(json);
JObject targetJObject = JsonConvert.DeserializeObject<JObject>(target);

if (!JToken.DeepEquals(sourceJObject, targetJObject))
{
    targetJObject.Merge(sourceJObject, new JsonMergeSettings
    { 
        MergeArrayHandling = MergeArrayHandling.Union
    });

}

File.WriteAllText(filePath, JsonConvert.SerializeObject(targetJObject, Formatting.Indented)); 

问题是,现在我添加了所有缺少的内容,但是现有的项目被跳过了。如果我使用MergeArrayHandling.Replace,它们将被替换,但不会被添加。问题:如何同时使用两者?

1 个答案:

答案 0 :(得分:1)

那你不能同时做两个吗?:

// http://127.0.0.1:8000/expenditure/add
{
  "account_head": [
    "5"
  ],
  "description": [
    null
  ],
  "amount": [
    "5000"
  ]
}