in src/Elastic.CommonSchema/Serialization/MetadataDictionaryConverter.cs [98:123]
private object? ExtractValue(ref Utf8JsonReader reader, JsonSerializerOptions options)
{
switch (reader.TokenType)
{
case JsonTokenType.String when reader.TryGetDateTime(out var date): return date;
case JsonTokenType.String: return reader.GetString();
case JsonTokenType.False: return false;
case JsonTokenType.True: return true;
case JsonTokenType.Null: return null;
case JsonTokenType.Number:
return reader.TryGetInt64(out var result) ? result : reader.TryGetDouble(out var d) ? d : reader.GetDecimal();
case JsonTokenType.StartObject:
return Read(ref reader, null, options);
case JsonTokenType.StartArray:
var list = new List<object?>();
while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) list.Add(ExtractValue(ref reader, options));
return list;
case JsonTokenType.None:
case JsonTokenType.EndObject:
case JsonTokenType.EndArray:
case JsonTokenType.PropertyName:
case JsonTokenType.Comment:
default:
throw new JsonException($"'{reader.TokenType}' is not supported");
}
}