JsonSerializer.Serialize 於型別參數為 null 時擲回 ArgumentNullException
具備型別參數 Type 的 JsonSerializer.Serialize、JsonSerializer.SerializeAsync 和 JsonSerializer.SerializeToUtf8Bytes 多載,現在會於針對該參數傳遞 null
時擲回 ArgumentNullException。
變更描述
在 .NET Core 3.1 中,具備 Type 參數的 JsonSerializer.Serialize、JsonSerializer.SerializeAsync(Stream, Object, Type, JsonSerializerOptions, CancellationToken) 和 JsonSerializer.SerializeToUtf8Bytes(Object, Type, JsonSerializerOptions) 多載會於針對 Type inputType
參數傳遞 null
時擲回 ArgumentNullException,但 Object value
參數同時為 null
時則不會擲回。 從 .NET 5 開始,這些方法一律會於針對 Type 參數傳遞 null
時擲回 ArgumentNullException。
.NET Core 3.1 中的行為:
// Returns a string with value "null".
JsonSerializer.Serialize(null, null);
// Returns a byte array with value "null".
JsonSerializer.SerializeToUtf8Bytes(null, null);
.NET 5 和更新版本中的行為:
// Throws ArgumentNullException: "Value cannot be null. (Parameter 'inputType')".
JsonSerializer.Serialize(null, null);
// Throws ArgumentNullException: "Value cannot be null. (Parameter 'inputType')".
JsonSerializer.SerializeToUtf8Bytes(null, null);
導入的版本
5.0
變更原因
系統不接受為 Type inputType
參數傳入 null
,且應一律擲回 ArgumentNullException。
建議的動作
請確認您未針對這些方法的 Type inputType
參數傳遞 null
。
受影響的 API
- System.Text.Json.JsonSerializer.Serialize(Object, Type, JsonSerializerOptions)
- System.Text.Json.JsonSerializer.Serialize(Utf8JsonWriter, Object, Type, JsonSerializerOptions)
- System.Text.Json.JsonSerializer.SerializeAsync(Stream, Object, Type, JsonSerializerOptions, CancellationToken)
- System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(Object, Type, JsonSerializerOptions)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應