我正在try 合并两个文件,但它们不会合并.我单步执行了我的代码,我用来合并文件的代码如下,每一行都运行,但我没有将文件2合并到文件1中.这些文件是:

文件=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"
    }
  ]
}

文件=2.json

{
  "count": 4,
  "next": null,
  "previous": null,
  "results": [
    {
      "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"
   }
  ]
}

我希望得到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"
   }
  ]
}

我用来合并这两个文件的代码片段是

JObject o1 = JObject.Parse(Utilities.LoadJson(myPath)); //myPath = 1.json 
JObject o2 = JObject.Parse(Utilities.LoadJson(path));    //path = 2.json

o1.Merge(o2);

//I also tried this line below instead of the line above but seems to result in the same
// o1.Merge(o2, new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Concat });

LoadJson()函数将文件读入字符串,因为我认为需要从字符串解析JOject

public static string LoadJson(string myFile)
{
      using (StreamReader r = new StreamReader(myFile))
      {
           return r.ReadToEnd();
      }
 }

我如何才能让它以我需要的方式工作?

推荐答案

只需将项添加到J数组

    o1["count"] = ((JArray)o1["results"]).Count
                     + ((JArray)o2["results"]).Count;

    foreach (JObject  o in o2["results"])
         ((JArray)o1["results"]).Add(o);
    
    string json = o1.ToString();

Csharp相关问答推荐

发布.NET框架项目将.NET核心元素注入到web. connect中

为什么xslWriter不总是按照xslWriterSet中指定的格式格式化该文档?

Blazor:类型或命名空间名称Components在命名空间中不存在''

应该使用哪一个?"_counter += 1 OR互锁增量(ref_counter)"""

如何在Visual Studio代码中更改大括号模式{},用于C#语言

(乌龙)1&#比c#中的UL&#慢吗?

返回TyedResults.BadRequest<;字符串>;时问题详细信息不起作用

Azure Redis缓存与Entra ID身份验证

静态对象构造顺序

ASP.NET核心MVC SqlException:违反主键约束';PK_USER';.无法在对象';数据库中插入重复的密钥.用户';

取决于您的数据量的多个嵌套循环

如何将MemberInitExpression添加到绑定中其他Lambda MemberInitExpression

在.NET 8最低API中从表单绑定中排除属性

避免只读记录 struct 中的防御副本

在使用UserManager时,如何包含与其他实体的关系?

在C#中有没有办法减少大型数组中新字符串的分配?

MSI无法将快捷方式添加到启动文件夹

在同一个捕获中可以有多种类型的异常吗?

C#使用相同内存的多个数组

Foreach非常慢的C#