如何使用 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
中修改值 AREA1
和 AREA2
。
如何使用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 属性?