我有一个正在使用
创建的JObject。 var jo = JObject.FromObject(myObject)
但是我随后需要基于一些标志有条件地删除一些属性,因为我们发送JSON的API会按其存在将某些属性视为真实,即使它们的值为false。因此,在这些属性为false
的情况下,我们实际上需要将其从JSON中完全删除。
我尝试按照Newtonsoft API文档执行以下操作:
if(!myFlag) jo["Path1"]["Path2"]["Path3"]["ConditionalItem"].Remove();
然而,Remove()
调用会引发此错误:
{
"ClassName": "Newtonsoft.Json.JsonException",
"Message": "Cannot add or remove items from Newtonsoft.Json.Linq.JProperty.",
"Data": null,
"InnerException": null,
"HelpURL": null,
"StackTraceString": "at Newtonsoft.Json.Linq.JProperty.RemoveItem(JToken item)
at Newtonsoft.Json.Linq.JToken.Remove()",
"RemoteStackTraceString": null,
"RemoteStackIndex": 0,
"ExceptionMethod": "RemoveItem Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed\nNewtonsoft.Json.Linq.JProperty Boolean RemoveItem(Newtonsoft.Json.Linq.JToken)",
"HResult": -2146233088,
"Source": "Newtonsoft.Json",
"WatsonBuckets": null
}
我也尝试按照this question使用.Property("key").Remove();
方法,但是对于我来说似乎不存在.Property()
方法。
如何从JObject中删除节点?