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

如何使用Json.NET修改JSON属性值,通过JObject.SelectTokens()编辑目标元素

实现方法

你可以通过JSONPath筛选表达式配合SelectTokens方法直接定位到目标节点,再修改属性值即可,具体实现如下:

1. 筛选规则说明

使用的JSONPath规则如下,可一次性匹配到两个需要修改的columns数组元素:
$.summary.summaryDataTable.columns[?(@.title == 'AREA1' || @.title == 'AREA2')]

  • $ 代表JSON根节点
  • .summary.summaryDataTable.columns 是逐层定位到存储列配置的数组
  • [?()] 内是过滤条件,筛选数组中title属性为目标值的元素

2. 完整代码示例

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

// 原始JSON字符串
string rawJson = @"{
   ""summary"":{
      ""summaryDataTable"":{
         ""id"":""summaryDataTable"",
         ""type"":""dataTable"",
         ""source"":""/SmartScreen/SummaryFw"",
         ""columns"":[
            {
               ""name"":""CreateDate"",
               ""title"":""AREA1"",
               ""filterable"":false
            },
            {
               ""name"":""CreateUser"",
               ""title"":""AREA2"",
               ""filterable"":false
            }
         ],
         ""options"":{
            ""showFilter"":false
         }
      }
   }
}";

// 解析为JObject对象
JObject jObject = JObject.Parse(rawJson);

// 批量筛选目标节点
var targetColumns = jObject.SelectTokens("$.summary.summaryDataTable.columns[?(@.title in ['AREA1','AREA2'])]");

foreach (JObject column in targetColumns)
{
    string currentTitle = column["title"].Value<string>();
    // 替换为你需要的实际值即可
    if (currentTitle == "AREA1")
    {
        column["title"] = "区域1";
    }
    else if (currentTitle == "AREA2")
    {
        column["title"] = "区域2";
    }
}

// 仅修改单个节点的简化写法
// var area1Node = jObject.SelectToken("$.summary.summaryDataTable.columns[?(@.title == 'AREA1')]");
// if (area1Node != null)
// {
//     area1Node["title"] = "区域1";
// }

// 输出验证修改结果
Console.WriteLine(jObject.ToString(Formatting.Indented));

注意事项

  • 如果你使用的Newtonsoft.Json版本较低不支持in语法,把筛选条件替换为[?(@.title == 'AREA1' || @.title == 'AREA2')]即可,效果完全一致。
  • 调用SelectToken时建议增加空判断,避免JSON结构变动找不到节点时报空引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:15:01