c# – 无法更新JToken值

c# – 无法更新JToken值,第1张

概述我正在尝试更新JToken的值,但它的引用没有得到更新. JSON字符串: { "Title": "master", "Presentation": [ { "Component": { "Content": { "Title": "Set New Title", } } } ]} 我正在尝试更新JToken的值,但它的引用没有得到更新.

JSON字符串:

{  "Title": "master","Presentation": [    {            "Component": {        "Content": {          "Title": "Set New Title",}      }    }  ]}

用法如下

JObject jo = JObject.Parse(file.ReadAllText(file.Json));foreach (var token in jo.SelectTokens("$..Component.Content").Children())            {                JProperty prop = token.ToObject<JProperty>();                prop.Value = "New Title";            }string JsonText = JsonConvert.SerializeObject(jo,Formatting.Indented);

在这个例子中,我正在尝试更新Title属性的值.它在foreach中得到更新,意味着局部变量正在更新,但更改未反映在主要作业中.

如果我做错了什么,有人可以帮助我吗?

解决方法 一旦调用ToObject,那么您正在使用副本.
如果你试试这个,它应该工作:
JObject jo = JObject.Parse(file.ReadAllText(file.Json));foreach (var prop in jo.SelectTokens("$..Component.Content")    .Children().OfType<JProperty>()){    prop.Value = "New Title";}string JsonText = JsonConvert.SerializeObject(jo,Formatting.Indented);

或处理多种类型的JTokens:

JObject jo = JObject.Parse(file.ReadAllText(file.Json));foreach (var token in jo.SelectTokens("$..Component.Content")    .Children()){    var prop = token as JProperty;    if (prop != null) prop.Value = "New Title";    var array = token as JArray;    if (array != null)    {        // some other logic    }}string JsonText = JsonConvert.SerializeObject(jo,Formatting.Indented);
总结

以上是内存溢出为你收集整理的c# – 无法更新JToken值全部内容,希望文章能够帮你解决c# – 无法更新JToken值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存