Сериализация .NET JSON с дополнительными свойствами - PullRequest
1 голос
/ 25 сентября 2019

У меня есть REST API, который обслуживает приложения в «диком» и работает нормально.API и потребитель работают с одной и той же моделью данных, поэтому объекты, которые API возвращает в формате JSON, анализируют непосредственно с объектами данных в потребителе.Это все прекрасно работает.Я использую Flurl для получения данных, которые десериализуются с помощью Newtonsoft.JSON. Я почти уверен.

Теперь есть несколько вещей, которые я хотел бы добавить в модель данных (и вводить данные в серверную часть вБД), чтобы сделать API более способным.Это не те свойства, о которых должен заботиться потребитель, но если я добавлю их в объекты модели данных, API пропустит их и вернет.Будет ли потребитель .NET жаловаться на это или игнорировать их?

Так, например, скажем, я вернул это в настоящее время как пользователь:

{
  Username: "something",
  Email: "someone@somewhere.com"
}

Однако, если я внесу изменения в API, то этовернет что-то вроде этого:

{
  Username: "something",
  Email: "someone@somewhere.com",
  Search: "SOME SEARCH FIELD DATA"
}

Начнет ли потребитель выдавать ошибки десериализации или просто проигнорирует дополнительное значение?Я пытался использовать Google, но все, что я нашел, было о том, как самостоятельно десериализовать данные JSON ...

Поскольку это общедоступно, мне придется сделать это по-другому, если это приведет к ошибке, но это будетдействительно приятно не иметь.

1 Ответ

0 голосов
/ 25 сентября 2019

Дополнительное поле будет просто проигнорировано.Если вы попытаетесь десериализовать JSON в объектный класс, а в классе отсутствуют некоторые поля, существующие в JSON, пропущенные поля просто не будут десериализованы.

Что-то, что сломает потребительскую сторону, - это если вы измените тип данных в вашем JSON.

Например, изменение Username: "something" на Username: 100 приведет к поломке потребителя, потому что вы только что изменилитип данных от string до int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...