国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Jackson 框架,輕易轉(zhuǎn)換JSON

2019-11-08 18:42:45
字體:
供稿:網(wǎng)友

Jackson 框架,輕易轉(zhuǎn)換JSON

Jackson可以輕松的將java對象轉(zhuǎn)換成json對象和xml文檔,同樣也可以將json、xml轉(zhuǎn)換成Java對象。

前面有介紹過json-lib這個框架,在線博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html

相比json-lib框架,Jackson所依賴的jar包較少,簡單易用并且性能也要相對高些。而且Jackson社區(qū)相對比較活躍,更新速度也比較快。

一、準(zhǔn)備工作

1、 下載依賴庫jar包

Jackson的jar all下載地址:http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar

然后在工程中導(dǎo)入這個jar包即可開始工作

官方示例:http://wiki.fasterxml.com/JacksonInFiveMinutes

因?yàn)橄旅娴某绦蚴怯胘unit測試用例運(yùn)行的,所以還得添加junit的jar包。版本是junit-4.2.8

如果你需要轉(zhuǎn)換xml,那么還需要stax2-api.jar

2、 測試類基本代碼如下

package com.hoo.test;

import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.codehaus.jackson.JsonEncoding; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.node.JsonNodeFactory; import org.codehaus.jackson.xml.XmlMapper; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.hoo.entity.AccountBean;

/** * function:Jackson 將java對象轉(zhuǎn)換成JSON字符串,也可以將JSON字符串轉(zhuǎn)換成java對象 * jar-lib-version: jackson-all-1.6.2 * jettison-1.0.1 * @author hoojo * @createDate 2010-11-23 下午04:54:53 * @file JacksonTest.java * @package com.hoo.test * @PRoject Spring3 * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */ @SuppressWarnings(“unchecked”) public class JacksonTest { private JsonGenerator jsonGenerator = null; private ObjectMapper objectMapper = null; private AccountBean bean = null;

@Beforepublic void init() { bean = new AccountBean(); bean.setAddress("china-Guangzhou"); bean.setEmail("hoojo_@126.com"); bean.setId(1); bean.setName("hoojo"); objectMapper = new ObjectMapper(); try { jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8); } catch (IOException e) { e.printStackTrace(); }}@Afterpublic void destory() { try { if (jsonGenerator != null) { jsonGenerator.flush(); } if (!jsonGenerator.isClosed()) { jsonGenerator.close(); } jsonGenerator = null; objectMapper = null; bean = null; System.gc(); } catch (IOException e) { e.printStackTrace(); }}

} 3、 所需要的JavaEntity

package com.hoo.entity;

public class AccountBean { private int id; private String name; private String email; private String address; private Birthday birthday;

//getter、setter@Overridepublic String toString() { return this.name + "#" + this.id + "#" + this.address + "#" + this.birthday + "#" + this.email;}

} Birthday

package com.hoo.entity;

public class Birthday { private String birthday;

public Birthday(String birthday) { super(); this.birthday = birthday;}//getter、setterpublic Birthday() {}@Overridepublic String toString() { return this.birthday;}

} 二、Java對象轉(zhuǎn)換成JSON

1、 JavaBean(Entity/Model)轉(zhuǎn)換成JSON

/** * function:將java對象轉(zhuǎn)換成json字符串 * @author hoojo * @createDate 2010-11-23 下午06:01:10 */ @Test public void writeEntityJSON() {

try { System.out.println("jsonGenerator"); //writeObject可以轉(zhuǎn)換java對象,eg:JavaBean/Map/List/Array等 jsonGenerator.writeObject(bean); System.out.println(); System.out.println("ObjectMapper"); //writeValue具有和writeObject相同的功能 objectMapper.writeValue(System.out, bean);} catch (IOException e) { e.printStackTrace();}

} 運(yùn)行后結(jié)果如下:

jsonGenerator {“address”:”china-Guangzhou”,”name”:”hoojo”,”id”:1,”birthday”:null,”email”:”hoojo_@126.com”} ObjectMapper {“address”:”china-Guangzhou”,”name”:”hoojo”,”id”:1,”birthday”:null,”email”:”hoojo_@126.com”} 上面分別利用JsonGenerator的writeObject方法和ObjectMapper的writeValue方法完成對Java對象的轉(zhuǎn)換,二者傳遞的參數(shù)及構(gòu)造的方式不同;JsonGenerator的創(chuàng)建依賴于ObjectMapper對象。也就是說如果你要使用JsonGenerator來轉(zhuǎn)換JSON,那么你必須創(chuàng)建一個ObjectMapper。但是你用ObjectMapper來轉(zhuǎn)換JSON,則不需要JSONGenerator。

objectMapper的writeValue方法可以將一個Java對象轉(zhuǎn)換成JSON。這個方法的參數(shù)一,需要提供一個輸出流,轉(zhuǎn)換后可以通過這個流來輸出轉(zhuǎn)換后的內(nèi)容。或是提供一個File,將轉(zhuǎn)換后的內(nèi)容寫入到File中。當(dāng)然,這個參數(shù)也可以接收一個JSONGenerator,然后通過JSONGenerator來輸出轉(zhuǎn)換后的信息。第二個參數(shù)是將要被轉(zhuǎn)換的Java對象。如果用三個參數(shù)的方法,那么是一個Config。這個config可以提供一些轉(zhuǎn)換時的規(guī)則,過指定的Java對象的某些屬性進(jìn)行過濾或轉(zhuǎn)換等。

2、 將Map集合轉(zhuǎn)換成Json字符串

/** * function:將map轉(zhuǎn)換成json字符串 * @author hoojo * @createDate 2010-11-23 下午06:05:26 */ @Test public void writeMapJSON() { try { Map


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 定日县| 花莲市| 内江市| 温宿县| 陇西县| 巴南区| 天长市| 昔阳县| 深水埗区| 德阳市| 波密县| 娱乐| 泰来县| 茶陵县| 金堂县| 嫩江县| 安平县| 嵊州市| 安西县| 安乡县| 南丰县| 绍兴县| 百色市| 孙吴县| 泌阳县| 札达县| 宝鸡市| 怀仁县| 准格尔旗| 常德市| 钦州市| 冕宁县| 体育| 扎囊县| 揭西县| 筠连县| 灌南县| 鹰潭市| 盐边县| 仲巴县| 白河县|