使用JsonView Jackson的Json序列化

 手机用户2602890681 发布于 2023-01-06 16:12

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

public class User extends Model
{
    static class publicView{}

    @JsonView(publicView.class)
    private Long id;

    private String showName;

    @JsonView(publicView.class)
    private List callableQueues;

}

当我在没有JsonView的情况下进行序列化时,我通常会做这样的事情

public JsonNode jsonSerialization()
{
    ObjectMapper mapper = new ObjectMapper();
    return mapper.convertValue(this, JsonNode.class);  
}

如何使用"publicView"类进行序列化?

1 个回答
  • 您可以配置对象映射器以包括publicView.class和排除其他字段,如下所示:

    禁用MapperFeature.DEFAULT_VIEW_INCLUSION映射器功能.

    通过该ObjectMapper#getSerializationConfig().withView()方法启用序列化视图.

    请参阅此页面以供参考.

    这是一个例子:

    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"]}
    

    2023-01-06 16:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有