我有一个类,我想忽略一些属性来序列化
public class User extends Model
{
static class publicView{}
@JsonView(publicView.class)
private Long id;
private String showName;
@JsonView(publicView.class)
private List<qQueue> callableQueues;
}
当我在没有 JsonView 的情况下进行序列化时,我通常会这样做
public JsonNode jsonSerialization()
{
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(this, JsonNode.class);
}
如何使用“publicView”类进行序列化?
最佳答案
您可以配置对象映射器以包含您的 publicView.class
并排除其他字段,如下所示:
- 禁用
MapperFeature.DEFAULT_VIEW_INCLUSION
映射器功能。 - 通过
ObjectMapper#getSerializationConfig().withView()
方法启用序列化 View 。
参见 this page供引用。
这是一个例子:
public class JacksonView1 {
public static class publicView{}
public static class User {
public User(Long id, String showName, List<String> callableQueues) {
this.id = id;
this.showName = showName;
this.callableQueues = callableQueues;
}
@JsonView(publicView.class)
public final Long id;
public final String showName;
@JsonView(publicView.class)
public final List<String> callableQueues;
}
public static void main(String[] args) {
User user = new User(123l, "name", Arrays.asList("a", "b"));
ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
mapper.setConfig(mapper.getSerializationConfig()
.withView(publicView.class));
System.out.println(mapper.convertValue(user, JsonNode.class));
}
}
输出:
{"id":123,"callableQueues":["a","b"]}
关于java - 使用 JsonView Jackson 进行 Json 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24541673/