C# 如何在现有JArray中添加JObject?
我的工作项目如下:C# 如何在现有JArray中添加JObject?,c#,json,json.net,C#,Json,Json.net,我的工作项目如下: JObject sampleObj = "{ "operator": "AND", "rules": [ { "field": "Entity.Country", "condition": "=", "value": "'USA'" }, { "field": "Entity.ShortName", "co
JObject sampleObj = "{
"operator": "AND",
"rules": [
{
"field": "Entity.Country",
"condition": "=",
"value": "'USA'"
},
{
"field": "Entity.ShortName",
"condition": "=",
"value": "'Adele'"
}
]
}"
如何在JSON中的JArray“规则”中添加另一个JObject?如下
JObject Parent =
"{
"operator": "AND",
"rules": [{
"field": "Entity.Country",
"condition": "=",
"value": "'USA'"
},
{
"field": "Entity.ShortName",
"condition": "=",
"value": "'Adele'"
},
{
"operator": "AND",
"rules": [{
"field": "Entity.Country",
"condition": "=",
"value": "'USA'"
},
{
"field": "Entity.ShortName",
"condition": "=",
"value": "'Adele'"
}
]
}
]
}"
我试过:
Parent["rules"].Add(sampleObj);
Parent.selectToken("rules").Add(sampleObj);
但是,智能感知不允许我这么做。致力于
C#+Newtonsoft.Json库:
'JToken' does not contain a definition for 'Add' and no accessible extension method 'Add' accepting a first argument of type 'JToken' could be found (are you missing a using directive or an assembly reference?)
您的问题是在
Parent[“rules”].Add(sampleObj)
中使用的访问器方法返回一个,它是所有可能的JSON值(原语或非原语)的抽象基类。因此,它没有Add()
方法,因为表示原语值的派生类没有Add()
方法
因此,您需要将Parent[“rules”]
强制转换为其实际类型,即,为了添加数组项:
((JArray)Parent["rules"]).Add(sampleObj);
如果您认为它看起来更干净,则可以使用替代内联强制转换的方法,该方法的作用相同:
Parent.Value<JArray>("rules").Add(sampleObj);
类似地,返回一个JToken
,因此也需要强制转换
相关的:
演示小提琴。听起来你需要施放
((JArray)Parent[“rules”])。添加(sampleObj)
非常感谢您分享这些有用的链接,朋友。这确实很有帮助@dbc
var array = Parent.Value<JArray>("rules") ?? (JArray)(Parent["rules"] = new JArray());
array.Add(sampleObj);