繁体   English   中英

如何在spring boot中的rest控制器方法端点上应用json忽略注释?

[英]How to apply json ignore annotation on a rest controller method endpoint in spring boot?

我有一个班级叫客户

Customer{
   private int ID;
   private IDCard idCard;
}

和 IDCard.Java

IDCard{
   private int id;
   private int score;
}

我有两个端点,endpoint01 和 endpoint02。 因此,当我使用 endpoint01 添加客户时,必须提供分数。 但是当我使用 endpoint02 添加客户时,分数不是强制性的。

当我在两个端点的控制器方法中使用相同的客户模型时,Jackson 抛出错误,因为在端点 02 上我没有提供分数。 在这种情况下,很明显我不能在我的 IDCard 模型中应用 json ignore 。 那么如何告诉我的 endpoint02 忽略 score 字段,如果它不存在,并且仅当该字段存在于 json 对象中时才反序列化。

这是我的端点02

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

您想要的是 POJO 上的注释,而不是 ENDPOINT 上的注释

IDCard{

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

}

这将使您在反序列化对象时避免使用字段。

注意:注意封装。

您可以在特定属性上应用忽略注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM