java - Spring 在创建对象后将 JsonView 应用于对象吗?

标签 java spring jackson

假设我有一个对象 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 放在几个字段上。然后,我只需在响应实体

中返回 HashMap

最佳答案

要应用 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/

相关文章:

java - 如何阻止 m2eclipse 插件干扰命令行 mvn 构建?

java - 统计模式(计算器 Java)

java - Spring MVC 多个请求映射,缺少 requestparam

java - 漂亮的输出总是插入 "\r\n"

java - Spring Json 解码期间出现 JsonMappingException

java - Drools - Drools 6 中的 ClassCastException

java - 使用补间动画缩小尺寸后,imageview 单击监听器仍然有效

java - 使用 Spring Boot 用 groovy 解析日期

java - 如何检查 GrantedAuthority 集合中是否存在权限?

java - 绕过 Json jackson 和 lombok 构造函数要求