我需要遍历一个sort文档,并根据我遇到的JsonValueKind执行某种检查。
我试着以这样的方式进行验证检查
public bool Dec(JsonElement Element)
{
var ElementEnumeratable = Element.EnumerateObject();
foreach (var Elm in ElementEnumeratable )
{
string name = Elm.Name;
switch (Elm.Value.ValueKind)
{
case JsonValueKind.Array:
var jArray = Elm.Value;
return Dec(jArray);
case JsonValueKind.String:
string jString = Elm.Value.GetString();
break;
case JsonValueKind.Number:
int jNumber = Elm.Value.GetInt32();
break;
}
}
return true;
}这里的问题是,当Elm有ValueKind数组时-我不能把它传递给Dec,它看起来像是JsonElement,它有valuekind作为数组,不能转换成EnumerateObject?
在这里做什么?
发布于 2020-04-03 18:49:46
据我所知,如果ValueKind是JsonValueKind.Array,那么你需要使用EnumerateArray()来迭代数组,这样你就有了JElement,并调用Dec foreach元素来验证它们,如下所示:
public static bool Dec(JsonElement Element)
{
var ElementEnumeratable = Element.EnumerateObject();
foreach (var Elm in ElementEnumeratable)
{
string name = Elm.Name;
switch (Elm.Value.ValueKind)
{
case JsonValueKind.Array:
var jArray = Elm.Value;
foreach (var item in jArray.EnumerateArray())
{
Dec(item);
}
break;
case JsonValueKind.String:
string jString = Elm.Value.GetString();
break;
case JsonValueKind.Number:
int jNumber = Elm.Value.GetInt32();
break;
}
}
return true;
}发布于 2020-04-03 17:11:42
我想你换错地方了。如果使用数组调用Dec(),它仍将调用EnumerateObject()。它需要为数组调用EnumerateArray()。
https://stackoverflow.com/questions/61008290
复制相似问题