private object? ExtractValue()

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");
			}
		}