I need to iterate through an JsonDocument and perform some sort of check depending on the JsonValueKind
I encounter.
I tried to do this validation check in such manner:
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;
}
Problem here is when Elm
has ValueKind
array - I cannot pass it to the Dec
it seems like JsonElement
which has valuekind as array, cannot be converted into an EnumerateObject
?
What to do here?
As I understand, if ValueKind
is JsonValueKind.Array
then you need to iterate array by using EnumerateArray()
so that you will have JsonElement
and call Dec
foreach element to validate each of them, like this:
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;
}