You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JObject.Merge合并JSON文件失败,如何实现数组拼接?

问题解决:合并两个JSON文件的results数组

问题原因

  • 你的代码仅在内存中完成了JObject的合并操作,但未将合并后的结果写入回原文件,因此磁盘上的1.json没有任何变化。
  • 虽然你尝试设置了MergeArrayHandling.Concat,但缺少持久化步骤,导致修改无法保存。

完整解决方案

以下是包含读取、合并、写入的完整代码:

// 读取两个JSON文件
JObject o1 = JObject.Parse(Utilities.LoadJson(@"path/to/1.json"));
JObject o2 = JObject.Parse(Utilities.LoadJson(@"path/to/2.json"));

// 配置合并规则:数组采用追加模式
var mergeSettings = new JsonMergeSettings
{
    MergeArrayHandling = MergeArrayHandling.Concat
};

// 执行合并
o1.Merge(o2, mergeSettings);

// 将合并后的结果写入回1.json文件
using (StreamWriter writer = new StreamWriter(@"path/to/1.json"))
using (JsonTextWriter jsonWriter = new JsonTextWriter(writer))
{
    o1.WriteTo(jsonWriter);
}

补充说明

  • MergeArrayHandling.Concat:该设置会将o2中的results数组元素追加到o1的results数组末尾,正好匹配你的期望效果。
  • 文件写入:必须通过StreamWriter将内存中的JObject序列化后写入文件,否则所有修改仅停留在内存中,不会影响磁盘文件。
  • 若需保留原1.json文件,可将合并结果写入新文件(如merged.json),避免覆盖原文件。

验证合并结果

执行上述代码后,1.json的内容将与你期望的完全一致:

{
  "count": 4,
  "next": null,
  "previous": null,
  "results": [
    {
      "consumption": 0.004,
      "interval_start": "2023-07-01T07:00:00+01:00",
      "interval_end": "2023-07-01T07:30:00+01:00"
    },
    {
      "consumption": 0.007,
      "interval_start": "2023-07-01T07:30:00+01:00",
      "interval_end": "2023-07-01T08:00:00+01:00"
    },
    {
      "consumption": 0.007,
      "interval_start": "2023-07-01T08:00:00+01:00",
      "interval_end": "2023-07-01T08:30:00+01:00"
    },
    {
      "consumption": 0.005,
      "interval_start": "2023-07-01T08:30:00+01:00",
      "interval_end": "2023-07-01T09:00:00+01:00"
   }
  ]
}

内容的提问来源于stack exchange,提问作者user3884423

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 05:07:50