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

ObjectConverter

sealed class ObjectConverter : JsonConverter<object>
using System.Runtime.CompilerServices; using System.Text.Json.Nodes; 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, [System.Runtime.CompilerServices.ScopedRef] ref ReadStack state, out object value) { object referenceValue; if (options.UnknownTypeHandling == JsonUnknownTypeHandling.JsonElement) { JsonElement jsonElement = JsonElement.ParseValue(ref reader); if (options.ReferenceHandlingStrategy == ReferenceHandlingStrategy.Preserve && JsonSerializer.TryHandleReferenceFromJsonElement(ref reader, ref state, jsonElement, out referenceValue)) value = referenceValue; else value = jsonElement; return true; } JsonNode jsonNode = JsonNodeConverter.Instance.Read(ref reader, typeToConvert, options); if (options.ReferenceHandlingStrategy == ReferenceHandlingStrategy.Preserve && JsonSerializer.TryHandleReferenceFromJsonNode(ref reader, ref state, jsonNode, out referenceValue)) value = referenceValue; else value = jsonNode; 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); } } }