java jackson的使用(摘抄)

原地址http://blog.csdn.net/accountwcx/article/details/24585987

一续镇、準備工作

首先去官網(wǎng)下載Jackson工具包众眨,下載地址http://wiki.fasterxml.com/JacksonDownload邢锯。Jackson有1.x系列和2.x系列戴已,截止目前2.x系列的最新版本是2.2.3,2.x系列有3個jar包需要下載:
jackson-core-2.2.3.jar(核心jar包,下載地址
jackson-annotations-2.2.3.jar(該包提供Json注解支持狐蜕,下載地址
jackson-databind-2.2.3.jar(下載地址

User類
//JSON序列化和反序列化使用的User類  
import java.util.Date;  
  
public class User {  
    private String name;  
    private Integer age;  
    private Date birthday;  
    private String email;  
      
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
      
    public Integer getAge() {  
        return age;  
    }  
    public void setAge(Integer age) {  
        this.age = age;  
    }  
      
    public Date getBirthday() {  
        return birthday;  
    }  
    public void setBirthday(Date birthday) {  
        this.birthday = birthday;  
    }  
      
    public String getEmail() {  
        return email;  
    }  
    public void setEmail(String email) {  
        this.email = email;  
    }  
}  
二、JAVA對象轉(zhuǎn)JSON[JSON序列化]
import java.io.IOException;  
import java.text.ParseException;  
import java.text.SimpleDateFormat;  
  
import com.fasterxml.jackson.databind.ObjectMapper;  
  
public class JacksonDemo {  
    public static void main(String[] args) throws ParseException, IOException {  
        User user = new User();  
        user.setName("小民");   
        user.setEmail("xiaomin@sina.com");  
        user.setAge(20);  
          
        SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");  
        user.setBirthday(dateformat.parse("1996-10-01"));         
          
        /** 
         * ObjectMapper是JSON操作的核心卸夕,Jackson的所有JSON操作都是在ObjectMapper中實現(xiàn)馏鹤。 
         * ObjectMapper有多個JSON序列化的方法,可以把JSON字符串保存File娇哆、OutputStream等不同的介質(zhì)中。 
         * writeValue(File arg0, Object arg1)把arg1轉(zhuǎn)成json序列勃救,并保存到arg0文件中碍讨。 
         * writeValue(OutputStream arg0, Object arg1)把arg1轉(zhuǎn)成json序列,并保存到arg0輸出流中蒙秒。 
         * writeValueAsBytes(Object arg0)把arg0轉(zhuǎn)成json序列勃黍,并把結(jié)果輸出成字節(jié)數(shù)組。 
         * writeValueAsString(Object arg0)把arg0轉(zhuǎn)成json序列晕讲,并把結(jié)果輸出成字符串覆获。 
         */  
        ObjectMapper mapper = new ObjectMapper();  
          
        //User類轉(zhuǎn)JSON  
        //輸出結(jié)果:{"name":"小民","age":20,"birthday":844099200000,"email":"xiaomin@sina.com"}  
        String json = mapper.writeValueAsString(user);  
        System.out.println(json);  
          
        //Java集合轉(zhuǎn)JSON  
        //輸出結(jié)果:[{"name":"小民","age":20,"birthday":844099200000,"email":"xiaomin@sina.com"}]  
        List<User> users = new ArrayList<User>();  
        users.add(user);  
        String jsonlist = mapper.writeValueAsString(users);  
        System.out.println(jsonlist);  
    }  
}  
三、JSON轉(zhuǎn)Java類[JSON反序列化]
import java.io.IOException;  
import java.text.ParseException;  
import com.fasterxml.jackson.databind.ObjectMapper;  
  
public class JacksonDemo {  
    public static void main(String[] args) throws ParseException, IOException {  
        String json = "{\"name\":\"小民\",\"age\":20,\"birthday\":844099200000,\"email\":\"xiaomin@sina.com\"}";  
          
        /** 
         * ObjectMapper支持從byte[]瓢省、File弄息、InputStream、字符串等數(shù)據(jù)的JSON反序列化勤婚。 
         */  
        ObjectMapper mapper = new ObjectMapper();  
        User user = mapper.readValue(json, User.class);  
        System.out.println(user);  
    }  
}  

四摹量、JSON注解

Jackson提供了一系列注解,方便對JSON序列化和反序列化進行控制馒胆,下面介紹一些常用的注解缨称。
@JsonIgnore 此注解用于屬性上,作用是進行JSON操作時忽略該屬性祝迂。
@JsonFormat 此注解用于屬性上睦尽,作用是把Date類型直接轉(zhuǎn)化為想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")型雳。
@JsonProperty 此注解用于屬性上当凡,作用是把該屬性的名稱序列化為另外一個名稱,如把trueName屬性序列化為name纠俭,@JsonProperty("name")宁玫。

import java.util.Date;  
import com.fasterxml.jackson.annotation.*;  
  
public class User {  
    private String name;  
      
    //不JSON序列化年齡屬性  
    @JsonIgnore   
    private Integer age;  
      
    //格式化日期屬性  
    @JsonFormat(pattern = "yyyy年MM月dd日")  
    private Date birthday;  
      
    //序列化email屬性為mail  
    @JsonProperty("mail")  
    private String email;  
      
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
      
    public Integer getAge() {  
        return age;  
    }  
    public void setAge(Integer age) {  
        this.age = age;  
    }  
      
    public Date getBirthday() {  
        return birthday;  
    }  
    public void setBirthday(Date birthday) {  
        this.birthday = birthday;  
    }  
      
    public String getEmail() {  
        return email;  
    }  
    public void setEmail(String email) {  
        this.email = email;  
    }  
}  
  
  
  
import java.io.IOException;  
import java.text.ParseException;  
import java.text.SimpleDateFormat;  
  
import com.fasterxml.jackson.databind.ObjectMapper;  
  
public class JacksonDemo {  
  
    public static void main(String[] args) throws ParseException, IOException {  
        User user = new User();  
        user.setName("小民");   
        user.setEmail("xiaomin@sina.com");  
        user.setAge(20);  
          
        SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");  
        user.setBirthday(dateformat.parse("1996-10-01"));         
          
        ObjectMapper mapper = new ObjectMapper();  
        String json = mapper.writeValueAsString(user);  
        System.out.println(json);  
        //輸出結(jié)果:{"name":"小民","birthday":"1996年09月30日","mail":"xiaomin@sina.com"}  
    }  
}  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市柑晒,隨后出現(xiàn)的幾起案子欧瘪,更是在濱河造成了極大的恐慌,老刑警劉巖匙赞,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佛掖,死亡現(xiàn)場離奇詭異妖碉,居然都是意外死亡,警方通過查閱死者的電腦和手機芥被,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門欧宜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拴魄,你說我怎么就攤上這事冗茸。” “怎么了匹中?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵夏漱,是天一觀的道長。 經(jīng)常有香客問我顶捷,道長挂绰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任服赎,我火速辦了婚禮葵蒂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘重虑。我一直安慰自己践付,他們只是感情好,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布缺厉。 她就那樣靜靜地躺著荔仁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芽死。 梳的紋絲不亂的頭發(fā)上乏梁,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機與錄音关贵,去河邊找鬼遇骑。 笑死,一個胖子當著我的面吹牛揖曾,可吹牛的內(nèi)容都是我干的落萎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼炭剪,長吁一口氣:“原來是場噩夢啊……” “哼练链!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奴拦,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤媒鼓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绿鸣,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡疚沐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了潮模。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亮蛔。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖擎厢,靈堂內(nèi)的尸體忽然破棺而出究流,到底是詐尸還是另有隱情,我是刑警寧澤动遭,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布芬探,位于F島的核電站,受9級特大地震影響沽损,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜循头,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一绵估、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卡骂,春花似錦国裳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浓若,卻和暖如春渺杉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挪钓。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工是越, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赛惩,地道東北人伞芹。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像单鹿,于是被迫代替她去往敵國和親馏予。 傳聞我的和親對象是個殘疾皇子天梧,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

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

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,852評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)霞丧,斷路器呢岗,智...
    卡卡羅2017閱讀 134,701評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,288評論 25 707
  • 2017.10.13,三體舞臺劇在杭州劇院上演,黃牛票240敷燎。 對照三體的宇宙社會學的兩條基本法則和李宗吾厚黑學理...
    易簡堂主閱讀 254評論 0 2
  • 我有個同事 她和另一個妹子合租 收快遞安全起見就裝作是個大漢子 于是她外賣上留的名字叫張大勇 她室友叫王大力…… ...
    奇趣玩閱讀 261評論 0 1