Newtosoft Json Deserialization: как вызвать ошибку, если / когда заданная строка json имеет больше свойств, чем необходимо? - PullRequest
1 голос
/ 29 марта 2019

Предполагая, что у нас есть следующий класс:

public class Foo {
      public long Id { get; set; }
}

Как мы можем сказать newtonsoft json бросить истерику, если заданная строка json равна:

{ "Id": 10, "SomethingIrrelevant": "Foobar" }

Другими словами, мыхотите, чтобы десериализация была ультра-строгой, и вызывайте истерику, когда обнаруживает что-либо подозрительное в этом роде.

1 Ответ

3 голосов
/ 29 марта 2019

Используйте MissingMemberHandling.Error для вашего JsonSerializerSettings:

var deserialized = JsonConvert.DeserializeObject<Foo>(jsonString,
    new JsonSerializerSettings
    {
        MissingMemberHandling = MissingMemberHandling.Error
    }); // throws with "Could not find member 'SomethingIrrelevant' on object of type 'Foo'."

Вы также можете заставить его бросить, если Id - не , используяJsonProperty с Required.Always:

public class Foo {
    [JsonProperty(Required = Required.Always)]
    public long Id { get; set; }
}
...