我是弹簧靴子和休息的新手,因此,如果这个问题很琐碎,请原谅我。
我遇到一种情况,该应用程序允许用户注册和下订单。 注册用户后,服务应能够发送包含以下用户信息的响应:-用户名,电子邮件,联系电话,地址等。
但是,在下订单时,我希望订单响应对象在订单详细信息中仅包括客户(用户名,电子邮件)。我不想包括User对象的地址和其他信息部分。
当前,发生的事情是每当我引用Order实例中的现有用户实例时,Order响应都具有注册用户的完整元组信息。
在“订单确认”响应中,我真的不想要整个用户信息。
但是,如果引用相同的Order实体进行用户注册,我希望该服务包括Order实体中的所有字段。
我尝试引用以下链接-
Jackson Change JsonIgnore Dynamically How do I exclude fields with Jackson not using annotations?
但是,无论引用实体的情况如何,此处提到的解决方案始终会忽略响应中的属性。
例如-订单服务的响应如下。
{
"id": "ORD-1000",
"priority": null,
"status": "Open",
"customer": {
"id": "1000",
"name": "Avion Solutions",
"email": "support-na@avionsolutions.com",
"contact": null,
"customerType": "gold-sx",
"shipToContactId": null,
"billToContactId": null
},
"urgency": null
}
在上面的响应元组中,可以说,我只想要带有基本客户信息的订单信息,例如姓名和电子邮件。
如果客户正在注册,则响应中应包含上述元组中提到的所有信息。
如何根据使用实体对象的上下文动态地忽略REST服务的响应中的属性?
谢谢。
答案 0 :(得分:0)
尝试使用@JsonView
注释。您可以定义给定属性的可见性,并且可以在REST
Controller
上定义要显示的级别。有关更多信息和示例,请阅读以下内容: