JSON.NET-无法删除属性

时间:2018-10-10 21:46:36

标签: json json.net

我有一个正在使用

创建的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中删除节点?

0 个答案:

没有答案