假设我有一个对象 User:
@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 :\
这就是我所做的一切。 value 最终成为整个用户对象,即使我只将 User.activity.class
View 放在几个字段上。然后,我只需在响应实体
最佳答案
要应用 View ,请使用 @JsonView
端点方法上的注释:
@GetMapping
@JsonView(User.Activity.class)
public User getUser() {
User user = new User();
return user;
}
要动态应用 View ,请将 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 中的 Jackson 集成。
关于java - Spring 在创建对象后将 JsonView 应用于对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39484038/