在嵌套的json对象中插入新元素

时间:2016-02-17 13:41:04

标签: c# json json.net

我已经嵌套了一些嵌套级别的JSON:

{
  "Main": [
    {
      "id": 123,
      "Sub1": [
        {
          "id": 2345,
          "description": "...",
          "Sub11": [
            {
              "subid": 6633,
              "xid": 5555
            }
          ]
        }
      ]
    },
    {
      "id": 332,
      "Sub1": [
        {
          "xid": 5555,
          "description": "...",
          "Sub11": [
            {
              "subid": 6794
            },
            {
              "subid": 4444
            }
          ]
        }
      ]
    }
  ]
}

这只是一个例子。我需要遍历整个JSON并为具有属性NewNode的元素插入一些json对象(xid: 5555

实施例。 前 -

"Sub11": [
        {
          "subid": 6633,
          "xid": 5555
        }
      ]

在 -

"Sub11": [
        {
          "subid": 6633,
          "xid": 5555,
          "NewNode":{
             "SomeProperty": "value"
          }
        }
      ]

我正在考虑遍历每个节点,检查属性名称(xid)。如果它的值匹配,则在那里插入节点(NewNode)。

有更简单的方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Json.Net LINQ-to-JSON API轻松完成此操作:

var root = JObject.Parse(json);
var matches = root.Descendants()
                  .OfType<JObject>()
                  .Where(x => x["xid"] != null && x["xid"].ToString() == "5555");

foreach (JObject jo in matches)
{
    jo.Add("NewNode", new JObject(new JProperty("SomeProperty", "value")));
}

Console.WriteLine(root.ToString());

小提琴:https://dotnetfiddle.net/DzJd3K