如何在自訂 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中文網其他相關文章!