我试图根据用户是否在内部隐藏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项?
答案 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 /资源,其中可以提供各种私有/内部信息。要访问此资源,应相应地进行身份验证。