如何使用 Json.NET 更改 JSON 属性的值? [关闭]

Posted

技术标签:

【中文标题】如何使用 Json.NET 更改 JSON 属性的值? [关闭]【英文标题】:How can I change the value of a JSON property using Json.NET? [closed] 【发布时间】:2021-11-28 12:58:30 【问题描述】:

我想从以下 JSON 字符串的解析 JObject 中修改值 AREA1AREA2

如何使用jObject.SelectTokens() 检索元素并对其进行编辑?


   "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
         
      
   

【问题讨论】:

相关:Replace part of a JSON with other (using a string token). 【参考方案1】:

如果您只需要针对上述 JSON 模型进行修改,请使用 JObject.SelectToken 使用 JSON 路径获取父对象,然后设置如下值:

var data = JObject.Parse(json);

var firstColumn = data.SelectToken("summary.summaryDataTable.columns[0]");
var secondColumn = data.SelectToken("summary.summaryDataTable.columns[1]");
firstColumn["title"] = "replacedTitle1";
secondColumn["title"] = "replacedTitle2";

输出:


  "summary": 
    "summaryDataTable": 
      "id": "summaryDataTable",
      "type": "dataTable",
      "source": "/SmartScreen/SummaryFw",
      "columns": [
        
          "name": "CreateDate",
          "title": "replacedTitle1",
          "filterable": false
        ,
        
          "name": "CreateUser",
          "title": "replacedTitle2",
          "filterable": false
        
      ],
      "options": 
        "showFilter": false
      
    
  

【讨论】:

【参考方案2】:

你可以试试这个

var json= ...your json;

var o= JObject.Parse(json);
var columns=o.SelectToken("summary.summaryDataTable.columns");

columns[0]["title"]="newTitle1";
columns[1]["title"]="newTitle2";

json = o.ToString(Newtonsoft.Json.Formatting.Indented);

【讨论】:

以上是关于如何使用 Json.NET 更改 JSON 属性的值? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章