首页 > 解决方案 > 从 JSON 中删除节点并将子节点向上移动

问题描述

我有一些 JSON,想从 JSON 中删除一个节点,但将已删除节点内的节点移动到其父节点。

这是我开始的 JSON:

{
    "Response": {
        "Outcome": {
            "KeyValueOfstringOutcomepQnxSKQu": [
                {
                    "Key": "Icon",
                    "Value": {
                        "DataType": "System.String",
                        "Field": "Icon",
                        "Value": "O"
                    }
                },
                {
                    "Key": "IconDescription",
                    "Value": {
                        "DataType": "System.String",
                        "Field": "IconDescription",
                        "Value": "Old"
                    }
                },
                {
                    "Key": "IconLongDescription",
                    "Value": {
                        "DataType": "System.String",
                        "Field": "IconLongDescription",
                        "Value": "Older"
                    }
                }
            ]
        }
    }
}

这是我想要结束的 JSON。我需要KeyValueOfstringOutcomepQnxSKQu删除节点,但它的子节点必须仍然存在于 JSON 中:

{
    "Response": {
        "Outcome": [
            {
                "Key": "Icon",
                "Value": {
                    "DataType": "System.String",
                    "Field": "Icon",
                    "Value": "O"
                }
            },
            {
                "Key": "IconDescription",
                "Value": {
                    "DataType": "System.String",
                    "Field": "IconDescription",
                    "Value": "Old"
                }
            },
            {
                "Key": "IconLongDescription",
                "Value": {
                    "DataType": "System.String",
                    "Field": "IconLongDescription",
                    "Value": "Older"
                }
            }
        ]
    }
}

我试图像这样删除节点,但据我所知:

JObject rss = JObject.Parse(Convert.ToString(jsonText));

var x = rss.Remove("KeyValueOfstringOutcomepQnxSKQu");

我怎样才能让孩子们向上移动?

标签: c#jsonjson.net

解决方案


您可以使用SelectTokenand执行此操作Replace

JObject rss = JObject.Parse(jsonText);
rss.SelectToken("Response.Outcome")
   .Replace(rss.SelectToken("Response.Outcome.KeyValueOfstringOutcomepQnxSKQu"));
jsonText = rss.ToString();

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


推荐阅读