如何在自定义 System.Text.Json.JsonConverter 中保留默认的序列化行为,而无需自定义写入逻辑?
JsonConverter 的选择具有不同的优先级,包括:
根据转换器应用方法的不同,有不同的方法可以实现默认序列化:
调用 JsonSerializer.Serialize(writer, person, options); 将生成默认序列化。
这是一个使用转换器工厂的示例:
<code class="language-csharp">public sealed class PersonConverter : DefaultConverterFactory<Person> { ... protected override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions modifiedOptions) => (T)JsonSerializer.Deserialize(ref reader, typeToConvert, modifiedOptions); protected override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions modifiedOptions) => JsonSerializer.Serialize(writer, value, modifiedOptions); } ... var person = new Person("John", "Doe"); var options = new JsonSerializerOptions { Converters = { new PersonConverter() } }; var json = JsonSerializer.Serialize(person, options);</code>
以上是如何在自定义 JsonConverters 中保留默认 JSON 序列化行为?的详细内容。更多信息请关注PHP中文网其他相关文章!