В теле запроса JSON как узнать, отсутствует ли значение поля или явно задано значение null? - PullRequest
0 голосов
/ 10 октября 2019

PersonController.java

@PutMapping(value = "/update", produces= MediaType.APPLICATION_JSON_VALUE)
public PersonDTO update (HttpServletRequest request, @RequestBody @Valid PersonDTO person) {
        return service.update(person);
    }

Person.DTO

public class PersonDTO {
    @NotNull
    @JsonProperty("name")
    private String name;

    @JsonProperty("age")
    private Integer age;

    @JsonProperty("hobbies")
    private String hobbies;

}

Тело моего запроса выглядит следующим образом

{
      "name": "Dinesh",
      "age": 25
}

Если я не передам hobbies в моем dtom я вижу значение как ноль.
Я хочу обновить свою базу данных только при передаче hobbies.
В некоторых случаях я передаю hobbies в моем запросе, чтобы установить значение NULL.
В предыдущем случае я не хочу обновлять мой столбец хобби в базе данных.
Как мне различить эти два?

1 Ответ

0 голосов
/ 10 октября 2019

Обновите PersonController.java как,

@PutMapping(value = "/update", produces= MediaType.APPLICATION_JSON_VALUE)
public PersonDTO update (HttpServletRequest request, @RequestBody @Valid Map<String,Object> person) {

   if(!person.containsKey("hobbies")) {
       // Logic in case hobbies is NOT passed by user
   } else if (person.containsKey("hobbies") && person.get("hobbies") == null){
       // Logic in case hobbies is passed by user as NULL
   } else {
       //Logic when hobbies is passed by the user
   }
   return service.update(person);
} 

Надеюсь, это поможет.

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