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值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)