Jackson 框架,輕易轉換JSON
Jackson可以輕鬆的將Java物件轉換成json物件和xml文件,同樣也可以將json、xml轉換成Java物件。
相比json-lib框架,Jackson所依賴的jar包較少,簡單易用並且效能也要相對高些。而且Jackson社群相對比較活躍,更新速度也比較快。
一、準備工作
1、 下載依賴庫jar包
然後在工程中匯入這個jar包即可開始工作
因為下面的程式是用junit測試用例執行的,所以還得新增junit的jar包。版本是junit-4.2.8
如果你需要轉換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;
/**
* <b>function:</b>Jackson 將java物件轉換成JSON字串,也可以將JSON字串轉換成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 [email protected]
* @version 1.0
*/
@SuppressWarnings("unchecked")
public class JacksonTest {
private JsonGenerator jsonGenerator = null;
private ObjectMapper objectMapper = null;
private AccountBean bean = null;
@Before
public void init() {
bean = new AccountBean();
bean.setAddress("china-Guangzhou");
bean.setEmail("[email protected]");
bean.setId(1);
bean.setName("hoojo");
objectMapper = new ObjectMapper();
try {
jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);
} catch (IOException e) {
e.printStackTrace();
}
}
@After
public 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
@Override
public 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、setter
public Birthday() {}
@Override
public String toString() {
return this.birthday;
}
}
二、Java物件轉換成JSON
1、 JavaBean(Entity/Model)轉換成JSON
/**
* <b>function:</b>將java物件轉換成json字串
* @author hoojo
* @createDate 2010-11-23 下午06:01:10
*/
@Test
public void writeEntityJSON() {
try {
System.out.println("jsonGenerator");
//writeObject可以轉換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();
}
}
執行後結果如下:
jsonGenerator
{"address":"china-Guangzhou","name":"hoojo","id":1,"birthday":null,"email":"[email protected]"}
ObjectMapper
{"address":"china-Guangzhou","name":"hoojo","id":1,"birthday":null,"email":"[email protected]"}
上面分別利用JsonGenerator的writeObject方法和ObjectMapper的writeValue方法完成對Java物件的轉換,二者傳遞的引數及構造的方式不同;JsonGenerator的建立依賴於ObjectMapper物件。也就是說如果你要使用JsonGenerator來轉換JSON,那麼你必須建立一個ObjectMapper。但是你用ObjectMapper來轉換JSON,則不需要JSONGenerator。
objectMapper的writeValue方法可以將一個Java物件轉換成JSON。這個方法的引數一,需要提供一個輸出流,轉換後可以通過這個流來輸出轉換後的內容。或是提供一個File,將轉換後的內容寫入到File中。當然,這個引數也可以接收一個JSONGenerator,然後通過JSONGenerator來輸出轉換後的資訊。第二個引數是將要被轉換的Java物件。如果用三個引數的方法,那麼是一個Config。這個config可以提供一些轉換時的規則,過指定的Java物件的某些屬性進行過濾或轉換等。
2、 將Map集合轉換成Json字串
/**
* <b>function:</b>將map轉換成json字串
* @author hoojo
* @createDate 2010-11-23 下午06:05:26
*/
@Test
public void writeMapJSON() {
try {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", bean.getName());
map.put("account", bean);
bean = new AccountBean();
bean.setAddress("china-Beijin");
bean.setEmail("[email protected]");
map.put("account2", bean);
System.out.println("jsonGenerator");
jsonGenerator.writeObject(map);
System.out.println("");
System.out.println("objectMapper");
objectMapper.writeValue(System.out, map);
} catch (IOException e) {
e.printStackTrace();
}
}
轉換後結果如下:
jsonGenerator
{"account2":{"address":"china-Beijin","name":null,"id":0,"birthday":null,"email":"[email protected]"},"name":"hoojo",
"account":{"address":"china-Guangzhou","name":"hoojo","id":1,"birthday":null,"email":"[email protected]"}}
objectMapper
{"account2":{"address":"china-Beijin","name":null,"id":0,"birthday":null,"email":"[email protected]"},"name":"hoojo",
"account":{"address":"china-Guangzhou","name":"hoojo","id":1,"birthday":null,"email":"[email protected]"}}
3、 將List集合轉換成json
/**
* <b>function:</b>將list集合轉換成json字串
* @author hoojo
* @createDate 2010-11-23 下午06:05:59
*/
@Test
相關推薦
Jackson 框架,輕易轉換JSON
Jackson可以輕鬆的將Java物件轉換成json物件和xml文件,同樣也可以將json、xml轉換成Java物件。 相比json-lib框架,Jackson所依賴的jar包較少,簡單易用並且效能也要相對高些。而且Jackson社群相對比較活躍,更新速度也
android jackson解析,物件轉json,json轉物件,map...
題外話:以前一直用的Gson,後來發現Jackson的確要比Gson快,現在估計很長一段時間都要用jackson了。 前言以及準備工作: 當我在網上找Jackson的依賴包的時候,看到很多文章都是複製過來複制過去的,裡面給的依賴包只有核心包jackson-core-2.x
使用Jackson時轉換JSON時,日期格式設置
ges 技術 自定義 -c color orm jackson 解決 style 在我們使用jackjson時時間默認輸出如下: 輸出是一串時間戳,不符合我們的要求,所以想到jackjson對時間的處理有他默認的格式,然後網上搜集各種資料,得出一下方式可以解決 取消j
Jackson 轉換JSON,SpringMVC ajax 輸出,當值為null或者空不輸出欄位@JsonInclude
當我們提供介面的時候, Ajax 返回的時候,當物件在轉換 JSON (序列化)的時候,值為Null 或者為“”的欄位還是輸出來了。看上去不優雅。 現在我敘述三種方式來控制這種情況。 註解的方式( @JsonInc
高效解析json例子,Jackson框架
Jackson可以輕鬆的將Java物件轉換成json物件和xml文件,同樣也可以將json、xml轉換成Java物件。 相比json-lib框架,Jackson所依賴的jar包較少,簡單易用並且效能也要相對高些。而且Jackson社群相對比較活躍,更新速
利用Jackson框架將json字串轉換成泛型List
Jackson處理一般的JavaBean和Json之間的轉換隻要使用ObjectMapper 物件的readValue和writeValueAsString兩個方法就能實現。但是如果要轉換複雜型別Collection如 List<YourBean>,那麼就需要先
json字符串轉換成json對象,json對象轉換成字符串,值轉換成字符串,字符串轉成值
兩個 負數 相關 5.6 對象 style pre www. 進行 主要內容: 一、json相關概念 二、json字符串轉換成json對象 (字符串-->JSON對象) 三、json對象轉換成字符串(json對象-->字符串) 四、將值轉換成字符串(值-
獲取window.location.href中傳的值,並且轉換成json數據使用
() win urn spa cati var 使用 並且 應該 做個記錄保存一下,以免以後再次用到忘記了。 function locVal(){ var url=window.location.href; if (url.indexOf(‘?‘)==-1
struts2的fastjson,jackson轉換json簡單使用
println lte ebe mat tin over release led 逗號 一.Fastjson使用 1.導入fastjson.jar包 2.使用方法 對於對象和集合使用同樣的方法 使用JSON.toJSONString(對象)返回一個jso
將spring boot 預設的jackson框架轉換為fastjson
將spring boot 預設的jackson框架轉換為fastjson fastjson可以預設將下劃線引數轉換為駝峰屬性。 實現程式碼: 一、新增依賴 <dependency> <groupId>com.alibaba</groupId>
string與json ,map與json的轉換
Map<String, Object> sendDateMap // map轉json物件 String sendDateStr = JSON.toJSONString(sendDateMap);(jsOn格式的) Map<String, Object> resultMap
mysql欄位用json格式,mybatis框架,傳前端格式轉意問題
a 前言 錯誤 解決 思考 前言 今天在實現點功能的時候,需要將mysql中的一個欄位型別設定為json,使用的框架是ssm,mybatis的逆向工程返回相應的欄位的型別是object,通過@responsebody註解傳
Robotframework中字典和JSON的區別,相互轉換方法
1、標準的Json格式如下: { "firstName":"Eddy" , "lastName":"Peng" } key和value都是採用雙引號的方式進行包裹。 2、但是Robotframework中建立的字典預設採用的是單引號進行包裹,所以並不能直接作為JSON使用
Jackson 2.9.8 釋出,Java 處理 JSON 資料類庫
Jackson 2.9.8 已釋出,更新內容如下: core Streaming #488: Fail earlier on coercions from "too big" BigInteger into fixed-size types (in
java,返回的json資料中Date型別格式的轉換
轉載自:http://blessht.iteye.com/blog/2018901 返回json資料時,資料庫中的Date型別是這種格式:"planTime":{"date":22,"day":6,"hours":0,"minutes":0,"month":3,"sec
JSON技術-Gson將bean轉換json確保資料的正確,使用FastJson將Json轉換Bean
一 、各個JSON技術的簡介和優劣 1.json-lib json-lib最開始的也是應用最廣泛的json解析工具,json-lib 不好的地方確實是依賴於很多第三方包, 包括commons-beanutils.jar,commons-collections-3.2.jar
spring boot 使用jackson 將資料物件轉換成json字串
首先在pom.xml中新增jackson依賴: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</
Android小問題:String轉換Json,以及org.json.JSONObject與org.json.JSONArray相互新增
import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; 這是Android原生的Js
jackson框架解析json
Jackson解析的速度算是同類框架中最快的,同時也是Spring MVC中內建使用的解析方式。 準備工作: 並將jar包新增到libs中 package com.example.jacksontest; import org.codehaus.jackson
接受第三方介面返回的json資料,解析轉換成Javabean
我的微信端專案使用到了json 資料傳輸格式,在這記錄一下,剛開始時是一臉的懵逼。 通過HttpClientUtils.post()工具類傳送json資料,使用字串String接受返回的json資料。 String res=HttpClientUtils.po