Megosztás a következőn keresztül:


Hiányzó tagok kezelése a deszerializálás során

Alapértelmezés szerint, ha a deszerializálni kívánt JSON hasznos adat olyan tulajdonságokat tartalmaz, amelyek nem léteznek a deszerializált egyszerű régi CLR-objektum (POCO) típusban, egyszerűen figyelmen kívül hagyják őket. A .NET 8-tól kezdődően megadhatja, hogy minden tagnak jelen kell lennie a hasznos adatban. Ha nem, kivételt JsonException jelent. Ezt a viselkedést háromféleképpen konfigurálhatja:

  • Jegyzetelje a POCO-típust az [<xref:System.Text.Json.Serialization.JsonUnmappedMemberHandlingAttribute>] attribútummal, és adja meg a tagoknak vagy Disallow hiányzó tagoknakSkip.

    [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'.
    
  • Állítsa be JsonSerializerOptions.UnmappedMemberHandling a vagy DisallowSkip a .

  • Szabja testre a JsonTypeInfo szerződést a megfelelő típushoz. (A szerződés testreszabásával kapcsolatos információkért lásd: JSON-szerződés testreszabása.)