Я работаю в ASP.NET webapi codebase, где мы в значительной степени полагаемся на автоматическую поддержку десериализации JSON тел сообщений в .NET-объекты через JSON.NET.
Как часть построения поддержки патчей для одного из наших ресурсов, я очень хотел бы различать необязательное свойство в объекте JSON, который не присутствует, по сравнению с тем же свойством, которое явно равно null. Мое намерение состоит в том, чтобы использовать первое для "не меняйте то, что там", и "удалите эту вещь".
Кто-нибудь знает, можно ли пометить мои CTO DTO, чтобы при десериализации, что JSON.NET может сказать мне, в каком случае это было? Сейчас они просто подошли к нулю, и я не могу понять, почему.
И наоборот, если кто-то может придумать лучший дизайн, который не требует, чтобы я делал это так, сохраняя при этом глагол патча, я хотел бы услышать ваше предложение.
В качестве конкретного примера рассмотрим эту полезную нагрузку, которая будет передана для размещения:
{
"field1": "my field 1",
"nested": {
"nested1": "something",
"nested2": "else"
}
}
Теперь, если я просто хочу обновить поле1, я должен отправить это как HTTP-патч:
{
"field1": "new field1 value"
}
и вложенные значения останутся нетронутыми. Однако, если я отправил это сообщение:
{
"nested": null
}
Я хочу знать, что это означает, что я должен явно удалить вложенные данные.