Obsługa brakujących elementów członkowskich podczas deserializacji
Domyślnie, jeśli ładunek JSON, który deserializujesz, zawiera właściwości, które nie istnieją w deserializacji zwykły stary obiekt CLR (POCO), są po prostu ignorowane. Począwszy od platformy .NET 8, można określić, że wszystkie elementy członkowskie muszą znajdować się w ładunku. Jeśli tak nie jest, JsonException zostanie zgłoszony wyjątek. To zachowanie można skonfigurować na jeden z trzech sposobów:
Dodaj adnotację do typu POCO za pomocą atrybutu JsonUnmappedMemberHandlingAttribute , określając element do Skip lub Disallow brakujących elementów członkowskich.
[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'.
Ustaw JsonSerializerOptions.UnmappedMemberHandling wartość lub Skip Disallow.
JsonTypeInfo Dostosuj kontrakt dla odpowiedniego typu. (Aby uzyskać informacje na temat dostosowywania kontraktu, zobacz Dostosowywanie kontraktu JSON.