初识Jackson

首先咱们学习json的时候第一想到的是如何将JavaBean对象转化成Json字符串,或者怎样将json字符串转化成JavaBean对象。html

一.JavaBean对象转化成Json字符串(串行化)

使用ObjectMapper objectMapper = new ObjectMapper()对象。java

直接贴代码吧,省略了了JavaBean的代码,json

若是不想一些属性被转化成json字符串的话,能够采用如下方法忽略掉:数组

1.直接在JavaBean属性上加上注解@JsonIgnore 

2.在类的上面加上@JsonIgnoreProperties

3.在属性上面标识@jsonView

JavaBean:app

由于Ios,Android均继承了Default类因此在输出Ios或Android视图的时候也会输出Default视图。ide

测试代码:学习

输出结果:测试

4.使用MixIn Annotation进行串行化

测试代码:url

测试结果:spa

5. 第4点与JsonFilter结合使用实现动态地过滤属性

输出结果:

二.json字符串转化成JavaBean对象(反串行化)

1.直接使用以下方式

2.使用JsonTree方式

 

三.自定义Json序列化类(可用于解决日期转Json的格式问题)

首先自定义一个序列化类(该类不能定义成内部类,不然报错)

而后在JavaBean属性上加上@JsonSerialize注解

测试代码结果:

四。当咱们串行化时,若是须要将值为null的属性转成Json字符串时其值变为空,使用如下方法

objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
            @Override
            public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers)
                    throws IOException {
                gen.writeString("");
            }
        });

 

五:当咱们不须要将值为Null的属性转化为Json字符串时

objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);

六:当咱们须要把Json字符串反串行化到集合时

①将简单的Json字符串反串行化到Map对象里时

String turingResult =
                "{\"code\":302000,\"text\":\"亲,已帮您找到相关新闻\"}";
        ObjectMapper objectMapper = new ObjectMapper();
//当须要用集合时,必须使用TypeFactory来构造集合类型
        TypeFactory typeFactory = objectMapper.getTypeFactory();
        Map<String, Object> map =
                objectMapper.readValue(turingResult,
                        typeFactory.constructMapType(HashMap.class, String.class, Object.class));
        System.out.println(map);

②将Json数组反串行化到List集合里

String turingResult =
                "[{\"article\":\"工信部:今年将大幅提网速降手机流量费\",\"source\":\"网易新闻\",\"icon\":\"\",\"detailurl\":\"http://news.163.com/15/0416/03/AN9SORGH0001124J.html\"},{\"article\":\"北京最强沙尘暴午后袭沪 当地叫停广场舞\",\"source\":\"网易新闻\",\"icon\":\"\",\"detailurl\":\"http://news.163.com/15/0416/14/ANB2VKVC00011229.html\"},{\"article\":\"公安部:小客车驾照年内试点自学直考\",\"source\":\"网易新闻\",\"icon\":\"\",\"detailurl\":\"http://news.163.com/15/0416/01/AN9MM7CK00014AED.html\"}]";

        ObjectMapper objectMapper = new ObjectMapper();
        //当须要用集合时,必须使用TypeFactory来构造集合类型
        TypeFactory typeFactory = objectMapper.getTypeFactory();
        List<Map<String, Object>> list =
                objectMapper.readValue(turingResult, typeFactory
                        .constructCollectionType(ArrayList.class, typeFactory.constructMapType(
                                HashMap.class, String.class, String.class)));
        System.out.println(list);
相关文章
相关标签/搜索