清除给定JObject内的所有数组



我需要清除/清空给定jobobject中的所有数组。有没有更好的方法来达到这个目的?

var jobject = request.selectToken(keyPath) as JObject;
foreach (var token in jobject.Descendants().Where(jt => jt is JArray).ToList())
{
var referenceToken = token as JArray;
referenceToken.Clear();                     
}

我也尝试重新分配referenceToken = new JArray(),但这当然会导致编译错误。

可以删除ToList。还可以使用OfType

删除类型检查
foreach (var array in jobject.Descendants().OfType<JArray>())
array.Clear();

如果你只需要根级的数组属性,那么你可以使用jobject.Children(),这是更快的。

您可以使用此代码删除整个项,而不仅仅是清除项的值。

jobject.Descendants()
.Where(x => x.Any(x => x.Type == JTokenType.Array))
.ToList()
.ForEach(tr => tr.Remove());

最新更新