说我有一个对象用户:
@JsonView(User.Activity.class)
String name
@JsonView(User.Activity.class)
int id
String description;
// Realistically there will be a lot more fiels here...
... getters and setters
然后我离开并创造了一个:
User u = new User();
u.setName("xoxo");
u.setId(1);
u.setDescription("DESCRIPTION....");
dao.save(u);
return u.withJsonView(User.Activity.class); // Is there a way to apply this?
我想使用特定JsonView
的字段将此对象返回给客户端。我怎么能这样做?
Hashmap hm = new Hashmap();
MappingJacksonValue value = new MappingJacksonValue(user);
value.setSerializationView(User.Activity.class);
hm.put("success", value);
return ResponseEntity.ok(hm); // Returns whole user object :\
这就是我所做的一切。 值 最终成为整个用户对象,即使我只将User.activity.class
视图放在几个字段上。我只是在 响应实体
答案 0 :(得分:1)
要应用视图,请在端点方法上使用@JsonView
注释:
@GetMapping
@JsonView(User.Activity.class)
public User getUser() {
User user = new User();
return user;
}
要动态应用视图 ,请将您的POJO打包成MappingJacksonValue
:
@GetMapping
public MappingJacksonValue getUser(){
User user = new User();
MappingJacksonValue value = new MappingJacksonValue(user);
value.setSerializationView(User.Activity.class);
return value;
}
有关详细信息,请查看this post关于Spring在Spring中的集成。