Bagikan melalui


Menangani anggota yang hilang selama deserialisasi

Secara default, jika payload JSON yang Anda deserialisasi berisi properti yang tidak ada dalam jenis objek CLR lama biasa yang dideserialisasi (POCO), mereka hanya diabaikan. Mulai dari .NET 8, Anda dapat menentukan bahwa semua anggota harus ada dalam payload. Jika tidak, JsonException pengecualian akan dilemparkan. Anda dapat mengonfigurasi perilaku ini dengan salah satu dari tiga cara:

  • Buat anotasi jenis POCO Anda dengan [<xref:System.Text.Json.Serialization.JsonUnmappedMemberHandlingAttribute>] atribut , menentukan anggota ke Skip atau Disallow yang hilang.

    [JsonUnmappedMemberHandling(JsonUnmappedMemberHandling.Disallow)]
    public class MyPoco
    {
         public int Id { get; set; }
    }
    
    JsonSerializer.Deserialize<MyPoco>("""{"Id" : 42, "AnotherId" : -1 }"""); 
    // JsonException : The JSON property 'AnotherId' could not be mapped to any .NET member contained in type 'MyPoco'.
    
  • Atur JsonSerializerOptions.UnmappedMemberHandling ke salah satuSkip atau Disallow.

  • Sesuaikan JsonTypeInfo kontrak untuk jenis yang relevan. (Untuk informasi tentang menyesuaikan kontrak, lihat Menyesuaikan kontrak JSON.)