【发布时间】:2021-02-02 20:04:14
【问题描述】:
我正在读取我的 json 文件并尝试替换属性值。 JSON 文件如下。
{
"fields": {
"summary": "summaryValue",
"project": {
"key": "projectValue"
},
"priority": {
"name": "priorityValue"
},
"Requestor": {
"name": "RequestorValue"
},
"issue": {
"name": "issueValue"
},
"labels": "LabelValue",
"customfield_xyz": "customfield_xyzValue"
}
}
如何替换 fields 属性中每个项目的值? 例如:
{"fields": {
"summary": "NewsummaryValue",
"project": {
"key": "NewprojectValue"
},
"priority": {
"name": "NewpriorityValue"
}
}
}
下面是解析我的json文件的代码,
StreamReader r = new StreamReader(filepath);
var jsondata = r.ReadToEnd();
var jobj = JObject.Parse(jsondata);
foreach (var item in jobj.Properties())
{
\\replace code
}
【问题讨论】:
-
真的要循环替换吗?直接访问它们来替换你想要的属性不是更容易吗?喜欢
jobj["fields"]["project"]["key"].Value = "Newprojectvalue";? NewtonSoft JSON.NET documentation has plenty of sample code 很有说明性。 -
你的意思是
jobj["fields"] = JToken.FromObject(new { summary = "NewsummaryValue", project = new { key = "NewprojectValue" }, priority = new { name = "NewpriorityValue" }});?或者您是否尝试一般地合并任意对象? -
提示:只有在您知道如何避免将其完全用于此工作时才使用
dynamic。否则,您可能会遇到比这更多的问题。此外,Json+dynamic 会消耗大约两倍的内存并且工作速度较慢,因为这些值是用 JTokens 包装的,如果你有一个正确的数据模型class,这是一种冗余。
标签: c# jsonresponse