过滤JSON响应Java Spring - RESTful服务

时间:2015-06-29 13:49:51

标签: java json spring

我试图根据用户是否在内部隐藏GET中的某些字段。

以下是我的控制器的片段:

@RequestMapping(value = "rules", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public StandardJSON list(@ActiveUser ActiveUserId userId)
{
    StandardJSON sj = new StandardJSON();
    sj.setErrors(new ArrayList<String>());
    sj.setData(service.listAllRules());
    return sj;
}

以上返回以下JSON:

{
    "customerProfileId": "",
    "lastModifiedBy": "",
    "location": "",
    ...
}

我可以使用getIsInternalUser()方法确定用户是否在内部。

如果用户是外部的,我如何过滤其中一个json项?

2 个答案:

答案 0 :(得分:1)

如果您可以使用Genson - Java and Scala to JSON conversion library,那么就可以这样做。它将排除&#34; foo&#34;来自Bar class的字段。

Genson genson = new Genson.Builder().exclude("foo", Bar.class).create();
genson.serialize(yourObject);

答案 1 :(得分:0)

资源应该是统一的。这意味着URL引用的JSON应该产生完全相同的结果,而不管&#34; who&#34;要求它。我唯一知道的是不同的MediaTypes。

如果您需要区分用户类型的信息,请通过修改网址(例如,在适合的任何地方添加/internal或类似内容)使其可见。 因此,您将获得不同的URL /资源,其中可以提供各种私有/内部信息。要访问此资源,应相应地进行身份验证。