Browse Source

Refactor ObjectToInferredTypesConverter serialization logic

pull/23693/head
maliming 11 months ago
parent
commit
df5bdb7129
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 15
      framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/ObjectToInferredTypesConverter.cs

15
framework/src/Volo.Abp.Json.SystemTextJson/Volo/Abp/Json/SystemTextJson/JsonConverters/ObjectToInferredTypesConverter.cs

@ -9,8 +9,6 @@ namespace Volo.Abp.Json.SystemTextJson.JsonConverters;
/// </summary> /// </summary>
public class ObjectToInferredTypesConverter : JsonConverter<object> public class ObjectToInferredTypesConverter : JsonConverter<object>
{ {
private JsonSerializerOptions? _writeJsonSerializerOptions;
public override object Read( public override object Read(
ref Utf8JsonReader reader, ref Utf8JsonReader reader,
Type typeToConvert, Type typeToConvert,
@ -30,9 +28,14 @@ public class ObjectToInferredTypesConverter : JsonConverter<object>
object objectToWrite, object objectToWrite,
JsonSerializerOptions options) JsonSerializerOptions options)
{ {
_writeJsonSerializerOptions ??= JsonSerializerOptionsHelper.Create(options, x => var runtimeType = objectToWrite.GetType();
x == this || if (runtimeType == typeof(object))
x.GetType() == typeof(ObjectToInferredTypesConverter)); {
JsonSerializer.Serialize(writer, objectToWrite, objectToWrite.GetType(), _writeJsonSerializerOptions); writer.WriteStartObject();
writer.WriteEndObject();
return;
}
JsonSerializer.Serialize(writer, objectToWrite, runtimeType, options);
} }
} }

Loading…
Cancel
Save