jackson系列(一)_基本使用

Jackson 介紹

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

jackson核心類說明

  • JsonGenerator:定義了寫JSON內(nèi)容的公共api基類,實(shí)例使用工廠方法創(chuàng)建因苹;
  • JsonFactory:jackson包最主要的工廠類苟耻,主要被用于配置和構(gòu)建reader(JsonParser)和writer(JsonGenerator);
  • ObjectMapper:ObjectMapper提供讀寫JSON扶檐、POJOs對(duì)象序列化成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)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝗茁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子寻咒,更是在濱河造成了極大的恐慌哮翘,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毛秘,死亡現(xiàn)場(chǎng)離奇詭異饭寺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)叫挟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門艰匙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抹恳,你說我怎么就攤上這事员凝。” “怎么了奋献?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵健霹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我瓶蚂,道長(zhǎng)糖埋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任窃这,我火速辦了婚禮瞳别,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杭攻。我一直安慰自己祟敛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布兆解。 她就那樣靜靜地躺著垒棋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痪宰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天畔裕,我揣著相機(jī)與錄音衣撬,去河邊找鬼。 笑死扮饶,一個(gè)胖子當(dāng)著我的面吹牛具练,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甜无,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扛点,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼哥遮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起陵究,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤眠饮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后铜邮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仪召,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年松蒜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扔茅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秸苗,死狀恐怖召娜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惊楼,我是刑警寧澤玖瘸,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站胁后,受9級(jí)特大地震影響店读,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜攀芯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一屯断、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侣诺,春花似錦殖演、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至搔确,卻和暖如春彼棍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背膳算。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工座硕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涕蜂。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓华匾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親机隙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜘拉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容