in src/Elastic.Clients.Elasticsearch/_Shared/Types/Aggregations/TermsInclude.cs [80:129]
public override TermsInclude? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.Null)
{
reader.Read();
return null;
}
TermsInclude termsInclude;
switch (reader.TokenType)
{
case JsonTokenType.StartArray:
var terms = JsonSerializer.Deserialize<string[]>(ref reader, options) ?? Array.Empty<string>();
termsInclude = new TermsInclude(terms);
break;
case JsonTokenType.StartObject:
long partition = 0;
long numberOfPartitions = 0;
while(reader.Read() && reader.TokenType != JsonTokenType.EndObject)
{
if (reader.TokenType == JsonTokenType.PropertyName)
{
var propertyName = reader.GetString();
reader.Read();
switch (propertyName)
{
case "partition":
partition = reader.GetInt64();
break;
case "num_partitions":
numberOfPartitions = reader.GetInt64();
break;
default:
throw new JsonException($"Unexpected property name '{propertyName}' encountered when deserializing TermsInclude.");
}
}
}
termsInclude = new TermsInclude(partition, numberOfPartitions);
break;
case JsonTokenType.String:
var regex = reader.GetString();
termsInclude = new TermsInclude(regex!);
break;
default:
throw new JsonException($"Unexpected token {reader.TokenType} when deserializing {nameof(TermsInclude)}");
}
return termsInclude;
}