json與bean的轉換
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
public void writeListJSON() {
try {
List<AccountBean> list = new ArrayList<AccountBean>();
list.add(bean);
bean = new AccountBean();
相關推薦
json與bean的轉換
Jackson可以輕鬆的將Java物件轉換成json物件和xml文件,同樣也可以將json、xml轉換成Java物件。 相比json-lib框架,Jackson所依賴的jar包較少,簡單易用並且效能也要相對高些。而且Jackson社群相對比較活躍,更新速度也比較快。 一、準備工作 1、 下載依賴
json 與 bean 之間的date轉換
擴充套件JsonValueProcessor介面獲得相應轉換的日期格式 import java.text.SimpleDateFormat; import java.util.Date; import net.sf.json.JsonConfig; imp
JSON與Javabean轉換的幾種形式
img 之一 keys open isp println 轉換成 hang zha JSON格式的數據傳遞是最常用的方法之一,以下列出了常用的幾種形態以及與Javabean之間的轉換: String json1="{‘name‘:‘zhangsan‘,‘age‘
c++ json與protobuf 轉換
/* * data: 2018-04-14 * author: cc509a * email: * protocol buffer and json convert each other * support array ,enum */ #i
一些json與物件轉換的工具集合類
package com.myhexin.ifs.utils; import org.codehaus.jackson.JsonFactory; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.j
json與bean,beanlist互轉
/** * json轉換成bean * */ public static <T> T jsonToBean(String jsonString, Class<T> beanCalss) throws Exc
Json與bean互轉的例子
第一種: public class JsonToJavaBean { public static void main(String[] args) { String str="{\"student\
BeanUtils Map與Bean轉換
不多說了,直接上程式碼,以下內容實現限制,javaBean必須在一個單獨的檔案中,並且Bean要為public的。【這裡需要依賴apache的commons-beanutils-1.7.0.jar】 轉換類: Java程式碼 import java.lang.reflect.Invoca
json與javabean轉換
String object = JSONObject.toJSONString(shoppingModelResultData);禁止json資料迴圈引用String object = JSONObject.toJSONString(shoppingModelResultData,SerializerFeat
Json與Bean互轉,Timestamp型別的問題
Json與Java Bean互相轉換時,Bean中的Timestamp欄位是無法直接處理的,需要實現兩個轉換器。 DateJsonValueProcessor的作用是Bean轉換為Json時將Timepstamp轉換為指定的時間格式。 import java.text.D
JSON 與JAVA數據的相互轉換
sse map ini ngs 相互 pro lec ble throw import net.sf.json.JSONArray;import net.sf.json.JSONException;import net.sf.json.JSONObject;import
Android GIS開發系列-- 入門季(8) Json與Geometry的相互轉換
相互轉換 them 實用 興趣 parse 執行 pretty pre andro 在Android中json數據十分普遍,也很實用,在Arcgis中也同樣支持Json數據,Json與Geometry可以相互轉換,達到我們想要的數據。 一、Geometry轉換成Json數
js中js數組、對象與json之間的轉換
clas 語法 方法 使用 blog ejs ava 部門 成了 ?數據在名稱/值對中?數據由逗號分隔?花括號保存對象?方括號保存數組 var jsonString = ‘{"bar":"property","baz":3}‘;//JSON字符串 var jsObject
【總結】使用Scala實現Json與Case Class相互轉換
json case classimport org.json4s.native.Serialization.{read, write} object Json2CaseClass extends App { implicit val formats = org.json4s.DefaultFormats
Json與List的相互轉換
from jsonarray fastjson exception 定義 又是 json info stock 生成二維碼的方法: 由於生成二維碼的參數類型是String,不能是list。如果將list的內容get出來拼成String生成二維碼。掃描二維碼後如何處理Stri
java常用工具類(一)—— Map 與 Bean 之間的互相轉換
import net.bytebuddy.implementation.bytecode.Throw; import org.springframework.cglib.beans.BeanMap; import java.beans.PropertyDescriptor; import java.lang
python3 json 與 物件之間的相互轉換
原文地址:http://blog.csdn.net/leilba/article/details/50654256 真的很感謝 # -*- coding: UTF-8 -*- import json #自定義類 class MyClass:
Json與List之間的相互轉換
谷歌的Gson.jar: //list轉換為json Gson gson = new Gson(); List<Person> persons = new ArrayList<Person>(); String str = gson.toJson(persons)
java json字串與物件轉換
下載引入包gson-2.0.jar 1.字元轉資料 final Map map = new HashMap();map.put("contents", "[{\"Id\":\"111\",\"AcceptNum\":222,\"ArchiveNum\":
alibaba下的fast json與字串String、陣列和list的相互轉換
/** * 實體類轉json * JSONObject j1 = (JSONObject)JSONObject.toJSON(man1); * json轉實體類 * Man man3 = JSONObject.parseObject(j