|
|
|
@ -11,15 +11,25 @@ namespace Volo.Abp.FeatureManagement.JsonConverters |
|
|
|
public override IStringValueType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) |
|
|
|
{ |
|
|
|
var rootElement = JsonDocument.ParseValue(ref reader).RootElement; |
|
|
|
var name = rootElement.EnumerateObject().FirstOrDefault(x => x.Name.Equals(nameof(IStringValueType.Name), StringComparison.OrdinalIgnoreCase)).Value.GetString(); |
|
|
|
var newOptions = JsonSerializerOptionsHelper.Create(options, this, new ValueValidatorJsonConverter(), new SelectionStringValueItemSourceJsonConverter()); |
|
|
|
return name switch |
|
|
|
|
|
|
|
var nameJsonProperty = rootElement.EnumerateObject().FirstOrDefault(x => x.Name.Equals(nameof(IStringValueType.Name), StringComparison.OrdinalIgnoreCase)); |
|
|
|
if (nameJsonProperty.Value.ValueKind == JsonValueKind.String) |
|
|
|
{ |
|
|
|
"SelectionStringValueType" => JsonSerializer.Deserialize<SelectionStringValueType>(rootElement.GetRawText(), newOptions), |
|
|
|
"FreeTextStringValueType" => JsonSerializer.Deserialize<FreeTextStringValueType>(rootElement.GetRawText(), newOptions), |
|
|
|
"ToggleStringValueType" => JsonSerializer.Deserialize<ToggleStringValueType>(rootElement.GetRawText(), newOptions), |
|
|
|
_ => throw new ArgumentException($"{nameof(IStringValueType)} named {name} was not found!") |
|
|
|
}; |
|
|
|
var name = nameJsonProperty.Value.GetString(); |
|
|
|
|
|
|
|
var newOptions = JsonSerializerOptionsHelper.Create(options, this, new ValueValidatorJsonConverter(), |
|
|
|
new SelectionStringValueItemSourceJsonConverter()); |
|
|
|
|
|
|
|
return name switch |
|
|
|
{ |
|
|
|
"SelectionStringValueType" => JsonSerializer.Deserialize<SelectionStringValueType>(rootElement.GetRawText(), newOptions), |
|
|
|
"FreeTextStringValueType" => JsonSerializer.Deserialize<FreeTextStringValueType>(rootElement.GetRawText(), newOptions), |
|
|
|
"ToggleStringValueType" => JsonSerializer.Deserialize<ToggleStringValueType>(rootElement.GetRawText(), newOptions), |
|
|
|
_ => throw new ArgumentException($"{nameof(IStringValueType)} named {name} was not found!") |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
throw new JsonException($"Can't to get the {nameof(IStringValueType.Name)} property of {nameof(IStringValueType)}!"); |
|
|
|
} |
|
|
|
|
|
|
|
public override void Write(Utf8JsonWriter writer, IStringValueType value, JsonSerializerOptions options) |
|
|
|
|