如何使用 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 属性的值? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

IEnumerable 在 Json.NET 中序列化为 [JsonObject],不使用属性

如何让 Json.NET 为具有复杂值的属性设置 IsSpecified 属性?

如何使用 JSON.net 处理同一属性的单个项目和数组

如何将 json 属性添加到 Json.net 数组

如何使用 Json.Net 序列化/反序列化具有附加属性的自定义集合

如何在 MVC 5 项目中使用 Json.NET 进行 JSON 模型绑定?