public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options) { if (value == null) { writer.WriteNullValue(); } else { if (value is JsonObject jsonObject) { ObjectConverter.Write(writer, jsonObject, options); } else if (value is JsonArray jsonArray) { ArrayConverter.Write(writer, (JsonArray)value, options); } else { Debug.Assert(value is JsonValue); ValueConverter.Write(writer, (JsonValue)value, options); } } }
public override object?Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { switch (reader.TokenType) { case JsonTokenType.Null: return(null); case JsonTokenType.String: case JsonTokenType.False: case JsonTokenType.True: case JsonTokenType.Number: return(ValueConverter.Read(ref reader, typeToConvert, options)); case JsonTokenType.StartArray: return(ArrayConverter.Read(ref reader, typeToConvert, options)); case JsonTokenType.StartObject: return(ObjectConverter.Read(ref reader, typeToConvert, options)); default: Debug.Assert(false); throw new JsonException(); } }