将JObject添加到.NET中的另一个JObject

时间:2019-11-18 23:25:48

标签: c# .net json json.net

我从以下两个JSON文件中加载了两个JObject

{
  "data": {
    "organism": {
      "human": [
        {
          "firstName": "John",
          "lastName": "Doe"
        }
      ]
    }
  }
}
{
  "degrees": [
    {
      "type": "bachelor",
      "major": "Math"
    },
    {
      "type": "master",
      "major": "Computer Science"
    }
  ]
}

我想像这样将它们组合成一个JObject

{
  "data": {
    "organism": {
      "human": [
        {
          "firstName": "John",
          "lastName": "Doe",
          "degrees": [
            {
              "type": "bachelor",
              "major": "Math"
            },
            {
              "type": "master",
              "major": "Computer Science"
            }
          ]
        }
      ]
    }
  }
}

我曾尝试像这样将它们添加为新字段,但是却收到一个错误,我无法将JObject添加到另一个JObject

jObject1["data"]["organism"]["human"][0]["lastName"].Parent.AddAfterSelf(jObject2)

然后我尝试使用JProperty添加它,但是它只是添加了一个重复的字段,这不是我需要的格式。

jObject1["data"]["organism"]["human"][0]["lastName"].Parent.AddAfterSelf(new JProperty("degrees",jobject2))

我不确定如何进行此操作。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

./cma_length noah bruh conner

注意:

  • ((JObject)jObject1["data"]["organism"]["human"][0]).Add(jObject2.Property("degrees")); 返回到jObject1["data"]["organism"]["human"][0]可以确保该路径上确实存在JSON对象。假设可以进行转换,可以轻松添加属性。

  • 您的查询添加了一个附加术语JObject,它实际上选择了与["lastName"]相对应的JValue "Doe"。不知道为什么要这么做,所以我从解决方案中将其删除。

  • JObject.Property返回具有给定名称的"lastName": "Doe";如果找不到,则返回null。然后可以通过其Add()方法将该JProperty添加到另一个JProperty。请注意,实际上,已添加了所选属性的副本,有关原因请参见this answer JArray.Remove(JToken) does not delete

演示小提琴here