1. 程式人生 > >Jackson轉換JSON例子

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");
            
           

相關推薦

Jackson轉換JSON例子

Jackson可以輕鬆的將Java物件轉換成json物件和xml文件,同樣也可以將json、xml轉換成Java物件。 相比json-lib框架,Jackson所依賴的jar包較少,簡單易用並且效能也要相對高些。而且Jackson社群相對比較活躍,更新速度也比較快。 一、準備工作 1、 下載依賴

struts2的fastjson,jackson轉換json簡單使用

println lte ebe mat tin over release led 逗號 一.Fastjson使用   1.導入fastjson.jar包   2.使用方法   對於對象和集合使用同樣的方法     使用JSON.toJSONString(對象)返回一個jso

Jackson 轉換JSON,SpringMVC ajax 輸出,當值為null或者空不輸出欄位@JsonInclude

當我們提供介面的時候,  Ajax  返回的時候,當物件在轉換  JSON  (序列化)的時候,值為Null 或者為“”的欄位還是輸出來了。看上去不優雅。 現在我敘述三種方式來控制這種情況。 註解的方式( @JsonInc

使用Jackson轉換JSON時,日期格式設置

ges 技術 自定義 -c color orm jackson 解決 style 在我們使用jackjson時時間默認輸出如下: 輸出是一串時間戳,不符合我們的要求,所以想到jackjson對時間的處理有他默認的格式,然後網上搜集各種資料,得出一下方式可以解決 取消j

Jacksonjson字符串轉換成泛型List

str json數組 std cer time stl cond exc obj 情景: 需求,需要做一個接口,請求體中的參數是string類型。 參數是一個批量的數據,json數組格式,所以需要把string的參數轉換成list類型。 參數如下: [ {

Jacksonjson字符串轉換成List<JavaBean>

ray 註意 編譯 new pub gpo body get ont public final ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args)

jackson實現json資料與物件, 集合之間的轉換

     前面列舉了Gson和fastjson處理json格式資料的具體用法,以下介紹jackson如何簡單處理json格式資料,還是延用前面文章中的實體類Product.          使用jackso

Jackson使用:String 與物件互轉、Jacksonjson 字串轉換出物件

一、從json字串轉換出物件 Pager類: import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @JsonIgnoreProperties(ignoreUnknown=true) public class Pager

基於jacksonJson與物件的互相轉換

  在JavaWeb開發中,經常會涉及到相關的json與物件的互相轉化問題,下面我就將其轉化的過程中可能遇到的情況一一寫出。 新增依賴 jackson依賴 <!--jackson--> <depend

Jackson 框架,輕易轉換JSON

Jackson可以輕鬆的將Java物件轉換成json物件和xml文件,同樣也可以將json、xml轉換成Java物件。 相比json-lib框架,Jackson所依賴的jar包較少,簡單易用並且效能也要相對高些。而且Jackson社群相對比較活躍,更新速度也

JacksonJson轉換

public class JacksonJsonUtil { private static ObjectMapper mapper; /** * 獲取ObjectMapper例項 * @param createNew 方式:true,新例項;false,存在

Java 用Jackson進行json和object之間的轉換(並解決json中存在新增多餘欄位的問題)

1、新增jackson庫 如果是maven工程,需要在pom.xml中新增jackson的依賴: <dependency> <groupId>com.fasterxml.jackson.core</groupId>

高效解析json例子Jackson框架

Jackson可以輕鬆的將Java物件轉換成json物件和xml文件,同樣也可以將json、xml轉換成Java物件。 相比json-lib框架,Jackson所依賴的jar包較少,簡單易用並且效能也要相對高些。而且Jackson社群相對比較活躍,更新速

一些json資料格式轉換例子

question1:後臺接受到前臺的json格式的字串怎麼處理?public static void jsonToJAVA() { System.out.println("json字串轉java程式碼"); String jsonStr = "{\"password\":\

protobuf的簡單應用,json和protocol Buffer的轉換簡單例子

Protocol Buffers 是一種輕便高效的結構化資料儲存格式,可以用於結構化資料序列化,很適合做資料儲存或 RPC 資料交換格式。它可用於通訊協議、資料儲存等領域的語言無關、平臺無關、可擴充套件的序列化結構資料格式。目前提供了 C++、Java、Python 三種語言的 API。 簡介 什

使用Jackson操作Json

out expire imp 數據轉換 fresh ann .get app object 1.引入jasckson-core.jar,jackson-annotations.jar和jackson-databind.jar 2.因為沒有做從http獲取和提交json數

兩款JSON類庫JacksonJSON-lib的性能對比(新增第三款測試)

border word ogg 收藏 一個 gen 每次 應用 googl 本篇文章主要介紹了"兩款JSON類庫Jackson與JSON-lib的性能對比(新增第三款測試)",主要涉及到兩款JSON類庫Jackson與JSON-lib的性能對比(新增第三款測試)方面的內容,

行列轉換例子

char temp insert lec gin emp arch union declare IF OBJECT_ID(‘tempdb..#ABC‘) IS NOT NULL DROP TABLE #ABC create table #ABC (

JAVA對象轉換JSON

使用 itl user lis 實體類 美化 有限公司 jar 編輯 1. 把java 對象列表轉換為json對象數組,並轉為字符串 復制代碼 代碼如下: JSONArray array = JSONArray.fromObject(userlist); St

使用Redis和jackson操作json中遇到的坑

表數據 谷歌 這樣的 進行 結構 length 找到 sql 報道   前言(可以略過)   最近在開發一個智能電表的管理系統,與常規的面向業務的系統不同。智能電表特點是每30分鐘會向服務器發一次請求,報道自己目前的電表情況。然後服務器根據電表情況統計此電表的電量使用情況