<PackageReference Include="System.Text.Json" Version="10.0.0-preview.3.25171.5" />

JsonObjectConverter

using System.Runtime.CompilerServices; using System.Text.Json.Nodes; using System.Text.Json.Schema; using System.Text.Json.Serialization.Metadata; namespace System.Text.Json.Serialization.Converters { internal sealed class JsonObjectConverter : JsonConverter<JsonObject> { internal override void ConfigureJsonTypeInfo(JsonTypeInfo jsonTypeInfo, JsonSerializerOptions options) { jsonTypeInfo.CreateObjectForExtensionDataProperty = (() => new JsonObject(options.GetNodeOptions())); } internal override void ReadElementAndSetProperty(object obj, string propertyName, ref Utf8JsonReader reader, JsonSerializerOptions options, [System.Runtime.CompilerServices.ScopedRef] ref ReadStack state) { JsonNodeConverter.Instance.TryRead(ref reader, typeof(JsonNode), options, ref state, out JsonNode value, out bool _); JsonNode jsonNode2 = ((JsonObject)obj)[propertyName] = value; } public override void Write(Utf8JsonWriter writer, JsonObject value, JsonSerializerOptions options) { if (value == null) writer.WriteNullValue(); else value.WriteTo(writer, options); } public override JsonObject Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { switch (reader.TokenType) { case JsonTokenType.StartObject: return ReadObject(ref reader, options.GetNodeOptions()); case JsonTokenType.Null: return null; default: throw ThrowHelper.GetInvalidOperationException_ExpectedObject(reader.TokenType); } } public static JsonObject ReadObject(ref Utf8JsonReader reader, JsonNodeOptions? options) { return new JsonObject(JsonElement.ParseValue(ref reader), options); } internal override JsonSchema GetSchema(JsonNumberHandling _) { return new JsonSchema { Type = JsonSchemaType.Object }; } } }