【问题标题】:how to replace property values in a dynamic JSON?如何替换动态 JSON 中的属性值?
【发布时间】: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


【解决方案1】:

我不知道你到底想要什么。但是我根据你的需要更改了代码sn-p中的json信息。

dynamic dataCollection = JsonConvert.DeserializeObject<dynamic>(jsonData);
          
string summary = dataCollection["fields"]["summary"];
string project = dataCollection["fields"]["project"]["key"];
string priority = dataCollection["fields"]["priority"]["name"];

dynamic json = new JObject();
json.summary = summary;
json.project = project;
json.priority = priority;

dynamic jsonRoot = new JObject();
jsonRoot.fields = json;

Console.WriteLine(jsonRoot.ToString());

输出:

【讨论】:

    猜你喜欢
    • 2014-07-12
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多