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

C#使用Newtonsoft.Json无法删除JSON中paths下含Water的子节点怎么办?

问题原因分析
  • 调用paths.Descendants()会返回paths节点下所有层级的后代节点,你需要筛选的是paths的直接子属性,而非所有嵌套后代
  • 原代码判断逻辑为item.ToString().Contains("Water"),是判断节点序列化后的字符串内容是否包含目标值,而非判断子节点的键名,判断逻辑错误
  • 条件判断写反:当前逻辑是删除不包含Water的节点,与需求完全相反
  • 直接遍历节点集合的同时执行删除操作,会导致集合枚举失效,触发异常或逻辑错误
正确实现代码
JObject root = JObject.Parse(my_json);
JObject paths = (JObject)root["paths"];

// 先收集所有paths下键名包含Water的直接子属性
var toRemoveList = paths.Properties()
    .Where(property => property.Name.Contains("Water"))
    .ToList();

// 遍历待删除列表执行移除操作
foreach (var property in toRemoveList)
{
    property.Remove();
}

// 可通过root.ToString()获取处理后的JSON字符串
处理后结果示例
{
  "monday": {},
  "paths": {
    "Apple": {
      "post": {}
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 19:27:03