在响应对象中隐藏JSON字段

时间:2013-10-31 18:23:09

标签: java json rest getjson jsonresult

假设我使用JAVA使用基于REST的服务,并且我有一个类似于下面所示的JSON响应对象。

<Response> "some text" <Response>
  <xyz_1> "some text" <xyz_1>
  <abc_action1>  "some text" <abc_action>
  <abc_action2>  "some text" <abc_action>
  <abc_action3>  "some text" <abc_action>
  <abc_action4>  "some text" <abc_action>
<Response> "some text" <Response>

在当前实现中,此Response类的相应Java类有5个实例变量{xyz_1,abc_action1,abc_action2,abc_action3,abc_action4}  使用getter和setter方法

所以我想要做的就是根据传入REST调用的queryParameters,我想隐藏(不发出)响应对象中的一个标记。这可能是因为Java类定义了5个变量吗?

2 个答案:

答案 0 :(得分:1)

如果你在REST实现中使用类似jersey的东西,那么你可以使用@JsonIgnore来完成这项任务。如果您使用其他提供商,那么至少您可以查看源代码并自行完成。

答案 1 :(得分:0)

一种解决方案是创建一个ResponseDTO类(如数据传输对象中的DTO,请参阅此article以获取非常简短的介绍),并让your(*)服务返回该类的对象Response个对象中。在您的服务中,您将仅初始化ResponseDTO对象中适合于当前查询参数的那些字段。

或者您可能会返回一个 new 非托管Response对象,在该对象中,您将再次仅初始化那些适合当前查询参数的字段。您应该在这里小心,不要对 managed 响应对象进行更改,因为这些更改将保留在数据库中。

(*)这里的“您”和“您的”指的是匿名“您”,而不是OP,后者必须已经通过某种方式弄清楚了这一点。 :)