Jobject 在嵌套元素中使用 .Add
Posted
技术标签:
【中文标题】Jobject 在嵌套元素中使用 .Add【英文标题】:Jobject using .Add in a nested element 【发布时间】:2021-12-22 22:07:14 【问题描述】:如果我有一个 Json 对象:
"data":
"SomeArray":[
"name":"test1"
,
"name":"test2"
,
"name":"test3"
]
这个对象是使用Jobject.Parse(jsonString);
解析的
如何在data
下添加一个字段,该字段保存数组中要转发给另一个系统的项目的计数。计数已经计算过了。我只需要像这样添加它:
"data":
"Count" : 3,
"SomeArray" : [
我试过了
myJObject["data"].Add("Count",count);
但是 .Add 在这里不起作用。我看到的唯一选项是AddAfterSelf()
有没有办法只添加一个简单的键值对而不必先创建Jproperty
并使用AddAfterSelf
添加它?
或者是正确的方式:x["Data"].AddAfterSelf(new JProperty("Count", count));
【问题讨论】:
【参考方案1】:这里的问题是myJObject["data"]
返回一个JToken
,它是JObject 的基类。
如果您确定“数据”将始终是一个对象,您可以执行以下操作
var data = myJObject.GetValue("data") as JObject;
data.Add("Count",120);
【讨论】:
我如何将数据添加回原始 JObject,只需执行myJObject["data"] = data;
?
@Bike_dotnet 你不应该这样做。它会自动出现在myJObject
,因为它是被引用的数据类型。【参考方案2】:
您可以通过将您从myJObject["data"]
获得的JToken
转换为JObject
来做到这一点。例如:
var data = (JObject)myJObject["data"];
data.Add("Count", 3);
【讨论】:
以上是关于Jobject 在嵌套元素中使用 .Add的主要内容,如果未能解决你的问题,请参考以下文章
带有 JObject 元素的 C# JsonResult 返回空数组