kaf*_*fka 5 c# system.text.json
我需要迭代 JsonDocument 并根据我遇到的情况执行某种检查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;
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是当Elm
有ValueKind
数组时 - 我无法将它传递给Dec
看起来JsonElement
有 valuekind 作为数组的数组,无法转换为EnumerateObject
?
在这里做什么?
据我了解,如果ValueKind
是JsonValueKind.Array
那么您需要使用来迭代数组,EnumerateArray()
以便您将拥有JsonElement
并调用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;
}
Run Code Online (Sandbox Code Playgroud)