<PackageReference Include="System.Text.Json" Version="7.0.0-preview.3.22175.4" />

ObjectConverter

sealed class ObjectConverter : JsonConverter<object>
namespace System.Text.Json.Serialization.Converters { internal sealed class ObjectConverter : JsonConverter<object> { internal override ConverterStrategy ConverterStrategy => ConverterStrategy.Object; public ObjectConverter() { base.CanBePolymorphic = true; base.RequiresReadAhead = true; } public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (options.UnknownTypeHandling == JsonUnknownTypeHandling.JsonElement) return JsonElement.ParseValue(ref reader); return JsonNodeConverter.Instance.Read(ref reader, typeToConvert, options); } public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options) { writer.WriteStartObject(); writer.WriteEndObject(); } internal override bool OnTryRead(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options, ref ReadStack state, out object value) { if (options.UnknownTypeHandling == JsonUnknownTypeHandling.JsonElement) { JsonElement jsonElement = JsonElement.ParseValue(ref reader); if (options.ReferenceHandlingStrategy == ReferenceHandlingStrategy.Preserve && JsonSerializer.TryGetReferenceFromJsonElement(ref state, jsonElement, out object referenceValue)) value = referenceValue; else value = jsonElement; return true; } value = JsonNodeConverter.Instance.Read(ref reader, typeToConvert, options); return true; } internal override object ReadAsPropertyNameCore(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { ThrowHelper.ThrowNotSupportedException_DictionaryKeyTypeNotSupported(TypeToConvert, this); return null; } internal override void WriteAsPropertyNameCore(Utf8JsonWriter writer, object value, JsonSerializerOptions options, bool isWritingExtensionDataProperty) { Type type = value.GetType(); JsonConverter converterInternal = options.GetConverterInternal(type); if (converterInternal == this) ThrowHelper.ThrowNotSupportedException_DictionaryKeyTypeNotSupported(type, this); converterInternal.WriteAsPropertyNameCoreAsObject(writer, value, options, isWritingExtensionDataProperty); } } }