Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ProblemDetails seçeneği ValidationProblemDetails için yerleşik destek olmaması nedeniyle JSON serileştirmeyi desteklemek için IgnoreNullValues
daha önce özel dönüştürücüler kullandı. Bu seçenek API'ler tarafından desteklendiğine System.Text.Json göre, çerçeve tarafından sağlanan serileştirmeye uygun olarak özel dönüştürücüleri çerçeveden kaldırdık.
Bu değişikliğin sonucu olarak, ve ValidationProblemDetails türlerindeki ProblemDetails özellikler artık küçük harfli tür adlarını varsaymaz. Geliştiricilerin doğru davranışı elde etmek için bir JsonNamingPolicy belirtmesi gerekir.
Sürüm kullanıma sunulmuştur
ASP.NET Core 8.0 Önizleme 2
Önceki davranış
Daha önce, serileştirme seçeneklerine özel dönüştürücü olarak ekleyebiliyor JsonStringEnumConverter ve seri durumdan çıkarma işlemi için ValidationProblemDetails400 durumuyla sonuçlandı.
string content = "{\"status\":400,\"detail\":\"HTTP egress is not enabled.\"}";
using MemoryStream stream = new();
using StreamWriter writer = new(stream);
writer.Write(content);
writer.Flush();
stream.Position = 0;
JsonSerializerOptions options = new();
options.Converters.Add(new JsonStringEnumConverter());
ValidationProblemDetails? details = await JsonSerializer.DeserializeAsync<ValidationProblemDetails>(stream, options);
Console.WriteLine(details.Status); // 400
Yeni davranış
.NET 8'den başlayarak, aynı kod için bir null
durumla ValidationProblemDetailssonuçlanmıştır.
string content = "{\"status\":400,\"detail\":\"HTTP egress is not enabled.\"}";
using MemoryStream stream = new();
using StreamWriter writer = new(stream);
writer.Write(content);
writer.Flush();
stream.Position = 0;
JsonSerializerOptions options = new();
options.Converters.Add(new JsonStringEnumConverter());
ValidationProblemDetails? details = await JsonSerializer.DeserializeAsync<ValidationProblemDetails>(stream, options);
Console.WriteLine(details.Status); // null
Hataya neden olan değişikliğin türü
Bu değişiklik davranışsal bir değişikliktir.
Değişiklik nedeni
JsonSerializerOptions.IgnoreNullValues ARTıK API'ler tarafından System.Text.Json
desteklendiğine göre, çerçeve tarafından sağlanan serileştirmeye uygun özel dönüştürücüleri kaldırdık.
Önerilen eylem
JsonSerializerOptions
Doğru ayrıntıları sağlayın.
JsonSerializerOptions options = new()
{
PropertyNameCaseInsensitive = true
};
ValidationProblemDetails? details = await JsonSerializer.DeserializeAsync<ValidationProblemDetails>(stream, options);