jackson系列(一)_基本使用

Jackson 介紹

Jackson框架是基于Java平臺的一套數(shù)據(jù)處理工具,被稱為“最好的Java Json解析器”。
Jackson框架包含了3個核心庫:streaming,databind,annotations.Jackson還包含了其它數(shù)據(jù)處理類庫,此外不作說明。
Jackson版本: 1.x (目前版本從1.1~1.9)與2.x。1.x與2.x從包的命名上可以看出來,1.x的類庫中,包命名以:org.codehaus.jackson.xxx開頭,而2.x類庫中包命令:com.fastxml.jackson.xxx開頭

jackson核心類說明

  • JsonGenerator:定義了寫JSON內(nèi)容的公共api基類,實例使用工廠方法創(chuàng)建;
  • JsonFactory:jackson包最主要的工廠類,主要被用于配置和構(gòu)建reader(JsonParser)和writer(JsonGenerator);
  • ObjectMapper:ObjectMapper提供讀寫JSON、POJOs對象序列化成JSON和反序列化、JSON樹模型;ObjectMapper是json序列化與反序列化的核心,可以在ObjectMapper配置許多屬性。
  • ConfigFeature——配置類接口
    • MapperFeature——Enumeration that defines simple on/off features to set for {@link ObjectMapper}
    • DeserializationFeature——Enumeration that defines simple on/off features that affect the way Java objects are deserialized from JSON
    • SerializationFeature——Enumeration that defines simple on/off features that affect the way Java objects are serialized

maven引入jackson包

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.8.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.8.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.5</version>
</dependency>

POJOs序列化為JSON以及JSON反序列化成POJOs

POJOs (Plain Old Java Objects)

public static class MyClass {
    private String name;
    private String passwd;
    private String address;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPasswd() {
        return passwd;
    }
    public void setPasswd(String passwd) {
        this.passwd = passwd;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "MyClass{" +
                "name='" + name + '\'' +
                ", passwd='" + passwd + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

jackson序列化以及反序列化

@Test
public void test() throws IOException {
    ObjectMapper mapper = new ObjectMapper();
    MyClass myClass = new MyClass();
    myClass.setName("daidai");
    myClass.setPasswd("123456");
    myClass.setAddress("beijing");
    File newFile = new File("my-class.json");
    System.out.println(mapper.canSerialize(Timestamp.class));
    System.out.println(mapper.canDeserialize(JsonUtil.constructParametricType(List.class, MyClass.class)));
    // json序列化
    // 序列化到文件
    mapper.writeValue(newFile, myClass);
    // 序列化成字符串
    String json = mapper.writeValueAsString(myClass);
    System.out.println(json);
    // json反序列化
    // 從文件反序列化
    MyClass older = mapper.readValue(new File("my-class.json"), MyClass.class);
    System.out.println(older);
    // 從json串反序列化
    MyClass older2 = mapper.readValue(json, MyClass.class);
    System.out.println(older2);
    // json Tree解析
    JsonNode root = mapper.readTree(newFile);
    System.out.println(root.at("/passwd"));
    System.out.println(root.at("/name"));
    System.out.println(root.at("/address"));
}

參考資料:http://blog.csdn.net/java_huashan/article/details/46375857

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容