实体类:
@Getter
@Setter
public class Role {
@JsonView({RoleView.info.class, UserView.info.class})
private String name;
@JsonView({RoleView.info.class, UserView.info.class})
private List<String> permission = new ArrayList<>(0);
private Date createTime;
private Boolean available = Boolean.FALSE;
}
@Getter
@Setter
public class User {
@JsonView({UserView.login.class, UserView.info.class})
private String name;
@JsonIgnore
private String password;
@JsonView({UserView.info.class})
private Role role;
private Date createTime;
}
JsonView 类
public class RoleView {
public static interface info{}
}
public class UserView {
public static interface login{}
public static interface info{}
}
Test类
public class UserTest {
private static final Logger LOGGER = LoggerFactory.getLogger(UserTest.class);
@Test
public void test() throws JsonProcessingException {
User user = new User();
Role role = new Role();
List<String> list = Lists.newArrayList();
list.add("user:list");
list.add("user:add");
list.add("user:delete");
list.add("user:remove");
list.add("user:update");
role.setPermission(list);
role.setName("admin");
role.setCreateTime(new Date());
user.setName("test001");
user.setPassword("123456");
user.setRole(role);
ObjectMapper om = new ObjectMapper();
om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
// om.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT); //属性是默认时不进行序列化,例如当时List<Role> list = new ArrayList<>(0); 无权限时,可以进行自动忽略
// om.setSerializationInclusion(JsonInclude.Include.NON_NULL); // null值不进行序列化
om.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); // 集合为空、String的length()为0、时间为zero、其他null
String json = om.writeValueAsString(user);
LOGGER.debug("format json: {}", json);
// om.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);//是一个双向开关,开启将输出没有JsonView注解的属性,false关闭将输出有JsonView注解的属性
json = om.writerWithView(UserView.info.class).writeValueAsString(user);
LOGGER.debug("format userview.info json: {}", json);
json = om.writerWithView(UserView.login.class).writeValueAsString(user);
LOGGER.debug("format userview.login json: {}", json);
}
}
输出:
13:26:23.097 [main] DEBUG cn.linuxcrypt.entity.UserTest - format json: {"name":"test001","role":{"name":"admin","permission":["user:list","user:add","user:delete","user:remove","user:update"],"createTime":"2016-08-04 13:26:22","available":false}}
13:26:23.104 [main] DEBUG cn.linuxcrypt.entity.UserTest - format userview.info json: {"name":"test001","role":{"name":"admin","permission":["user:list","user:add","user:delete","user:remove","user:update"],"createTime":"2016-08-04 13:26:22","available":false}}
13:26:23.105 [main] DEBUG cn.linuxcrypt.entity.UserTest - format userview.login json: {"name":"test001"}