java - 使用 JsonView Jackson 进行 Json 序列化

标签 java json serialization jackson

我有一个类,我想忽略一些属性来序列化

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/

相关文章:

json - 如何解析包含键值对的 JSON 对象?

gwt - 除了破解 Date_CustomFieldSerializer 并重新编译 GWT 之外,还有其他解决方案吗

c# - 序列化类时未标记为可序列化错误

java - Webdriver:java.net.BindException:地址已在使用:连接

java - Struts2 + Sitemesh + Freemarker 不起作用

java - 通过 JDBCTemplate 使用准备好的语句

java - Thymeleaf:将参数添加到当前 url

java - GSON反序列化后完成对象构造

json - Azure 表存储 JSON 返回每个条目的数组而不是单个数组

HashMap<String,LinkedList<Investor>> 的 java jackson 数据绑定(bind)