JsonNodeConverterFactory
using System.Text.Json.Node;
using System.Text.Json.Serialization.Metadata;
namespace System.Text.Json.Serialization.Converters
{
internal sealed class JsonNodeConverterFactory : JsonConverterFactory
{
public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
{
if (JsonTypeInfo.ObjectType == typeToConvert) {
if (options.UnknownTypeHandling == JsonUnknownTypeHandling.JsonNode)
return JsonNodeConverter.Instance;
return JsonMetadataServices.ObjectConverter;
}
if (typeof(JsonValue).IsAssignableFrom(typeToConvert))
return JsonNodeConverter.Instance.ValueConverter;
if (typeof(JsonObject) == typeToConvert)
return JsonNodeConverter.Instance.ObjectConverter;
if (typeof(JsonArray) == typeToConvert)
return JsonNodeConverter.Instance.ArrayConverter;
return JsonNodeConverter.Instance;
}
public override bool CanConvert(Type typeToConvert)
{
if (!(typeToConvert == JsonTypeInfo.ObjectType))
return typeof(JsonNode).IsAssignableFrom(typeToConvert);
return true;
}
}
}