我需要清除/清空给定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());