Как применить аннотацию игнорирования json к конечной точке метода контроллера rest в spring boot?

#java #spring-boot #spring-mvc #jackson

#java #spring-boot #spring-mvc #джексон

Вопрос:

У меня есть класс с именем Customer

 Customer{
   private int ID;
   private IDCard idCard;
}
  

и IDCard.Java

 IDCard{
   private int id;
   private int score;
}
  

У меня есть две конечные точки, endpoint01 и endpoint02.
Поэтому, когда я добавляю клиента, используя endpoint01, предоставление оценки является обязательным. Но когда я добавляю клиента, используя endpoint02, оценка не является обязательной.

Поскольку я использую одну и ту же модель клиента в обоих методах контроллера конечной точки, Джексон выдает ошибку, потому что в endpoint02 я не предоставил оценку. В этом случае ясно, что я не могу применить игнорирование json в моей модели IDcard. Итак, как я могу указать моему endpoint02 игнорировать поле оценки, если оно отсутствует, и десериализовать, только если поле присутствует в объекте json.

Это мой endpoint02

 @RequestMapping(method=RequestMethod.POST, value="/add",headers="Accept=application/json")
public @ResponseBody Map<String,List<String>> add(@RequestBody Customer customer)  {
    return customerSvc.add(customer);
}
  

Ответ №1:

то, что вы хотите, это аннотации на вашем POJO, а не на вашей конечной точке

 IDCard{

   @JsonProperty(vaue="id" , required=false)
   private int id;
   @JsonProperty(vaue="score" , required=false)
   private int score;

}
  

это позволит избежать ваших полей при десериализации объекта.

Примечание: позаботьтесь об инкапсуляции.

Ответ №2:

Вы можете применить аннотацию игнорирования к определенному свойству.