Java tojson,Java中json-lib的各種數(shù)據(jù)轉(zhuǎn)換,及對(duì)象轉(zhuǎn)換
JSON 是目前流行的交換數(shù)據(jù)格式,經(jīng)常有童鞋問(wèn)我, json-lib 怎么操作 JSON , jackson 怎么操作 JSON , Goson 怎么操作 JSON 等等,本篇介紹 json-lib 的各種操作。
其他的 JSON 信息都在這里:http://suancuo.cn/tag_json.html
json-lib 的jar包引入:http://suancuo.cn/blog/101
一、json-lib的JSON和JavaBean的相互轉(zhuǎn)換。
1、自定義Java Bean 轉(zhuǎn)JSON對(duì)象。
/**
* JSON-Lib 對(duì)象轉(zhuǎn)JSON
*/
@Test
public void entity2json() {
//構(gòu)建一個(gè)對(duì)象
JSONModel model = new JSONModel();
model.setAge(10);
model.setName("張三");
model.setDomain("http://suancuo.cn");
//對(duì)象轉(zhuǎn)JSON
JSONObject json = JSONObject.fromObject(model);
//轉(zhuǎn)成String
String jsonStr = json.toString();
System.out.printf("json-lib,對(duì)象轉(zhuǎn)JSON:%s",jsonStr);
//json-lib,對(duì)象轉(zhuǎn)JSON:{"age":10,"domain":"http://suancuo.cn","name":"張三"}
}這里是一個(gè)普通的自定義的 Java Bean 對(duì)象轉(zhuǎn)換。
2、JSON字符串轉(zhuǎn)成Java Bean 對(duì)象。
/**
* JSON-Lib JSON轉(zhuǎn)對(duì)象
*/
@Test
public void json2entity() {
/*
* 剛剛的字符串
* {"age":10,"domain":"http://suancuo.cn","name":"張三"}
* 但是我們要轉(zhuǎn)義雙引號(hào),可以用網(wǎng)址 http://suancuo.cn/yasuo.html
*/
String jsonStr = "{\"age\":10,\"domain\":\"http://suancuo.cn\",\"name\":\"張三\"}";
//JSON字符串轉(zhuǎn)JSON對(duì)象
JSONObject json = JSONObject.fromObject(jsonStr);
//JSON對(duì)象 轉(zhuǎn) JSONModel對(duì)象
JSONModel model = (JSONModel) JSONObject.toBean(json, JSONModel.class);
//轉(zhuǎn)成String 方便輸出
System.out.printf("json-lib,JSON轉(zhuǎn)對(duì)象:%s",JSONObject.fromObject(model).toString());
//json-lib,JSON轉(zhuǎn)對(duì)象:{"age":10,"domain":"http://suancuo.cn","name":"張三"}
}二、json-lib的JSON和Map的相互轉(zhuǎn)換。
1、Map轉(zhuǎn)JSON。
/**
* Map 轉(zhuǎn) JSON
*/
@Test
public void map2json(){
Map map = new HashMap();
map.put("age",10 );
map.put("name","張三");
map.put("domain","http://suancuo.cn");
//對(duì)象轉(zhuǎn)JSON
JSONObject json = JSONObject.fromObject(map);
//轉(zhuǎn)成String
String jsonStr = json.toString();
System.out.printf("json-lib,Map轉(zhuǎn)JSON:%s",jsonStr);
//json-lib,Map轉(zhuǎn)JSON:{"age":10,"domain":"http://suancuo.cn","name":"張三"}
} 2、JSON轉(zhuǎn)Map
/**
* JSON-Lib JSON轉(zhuǎn)Map
*/
@Test
public void json2map() {
/*
* 剛剛的字符串
* {"age":10,"domain":"http://suancuo.cn","name":"張三"}
* 但是我們要轉(zhuǎn)義雙引號(hào),可以用網(wǎng)址 http://suancuo.cn/yasuo.html
*/
String jsonStr = "{\"age\":10,\"domain\":\"http://suancuo.cn\",\"name\":\"張三\"}";
//JSON字符串轉(zhuǎn)JSON對(duì)象
JSONObject json = JSONObject.fromObject(jsonStr);
//JSON對(duì)象 轉(zhuǎn) JSONModel對(duì)象
Map model = (Map) JSONObject.toBean(json, Map.class);
//轉(zhuǎn)成String 方便輸出
System.out.printf("json-lib,JSON轉(zhuǎn)Map:%s",JSONObject.fromObject(model).toString());
//json-lib,JSON轉(zhuǎn)Map:{"name":"張三","age":10,"domain":"http://suancuo.cn"}
} 三、json-lib的JSONArray和List的相互轉(zhuǎn)換。
1.List轉(zhuǎn)JSONArray。
/**
* JSON-Lib List轉(zhuǎn)JSONArray
*/
@Test
public void list2JSONArray() {
//創(chuàng)建一個(gè)List
List list = new ArrayList();
JSONModel model = new JSONModel();
model.setAge(10);
model.setName("張三");
model.setDomain("http://suancuo.cn");
list.add(model);
model = new JSONModel();
model.setAge(25);
model.setName("李四");
model.setDomain("http://ping.sojson.com");
list.add(model);
//List 轉(zhuǎn) JSONArray
JSONArray jsonArray = JSONArray.fromObject(list);
//JSONArray 轉(zhuǎn) String
String jsonArrayStr = jsonArray.toString();
//輸出
System.out.printf("JSON-Lib List轉(zhuǎn)JSONArray:%s",jsonArrayStr);
//JSON-Lib List轉(zhuǎn)JSONArray:
/*
[
{
"age": 10,
"domain": "http://suancuo.cn",
"name": "張三"
},
{
"age": 25,
"domain": "http://ping.sojson.com",
"name": "李四"
}
]
*/
} 2.JSONArray轉(zhuǎn)List。
/**
* JSON-Lib JSONArray轉(zhuǎn)List
*/
@SuppressWarnings("unchecked")
@Test
public void jsonArray2List(){
//剛剛的JSON字符串
//[{"age":10,"domain":"http://suancuo.cn","name":"張三"},{"age":25,"domain":"http://ping.sojson.com","name":"李四"}]
String jsonArrayStr = "[{\"age\":10,\"domain\":\"http://suancuo.cn\",\"name\":\"張三\"},{\"age\":25,\"domain\":\"http://ping.sojson.com\",\"name\":\"李四\"}]";
//json字符串轉(zhuǎn)成JSONArray
JSONArray jsonArray = JSONArray.fromObject(jsonArrayStr);
//JSONArray 轉(zhuǎn) List
List list = JSONArray.toList(jsonArray, JSONModel.class);
//輸出
System.out.printf("JSON-Lib JSONArray轉(zhuǎn)List:\n%s",JSONArray.fromObject(list).toString());
/*
JSON-Lib JSONArray轉(zhuǎn)List:
[{"age":10,"domain":"http://suancuo.cn","name":"張三"},{"age":25,"domain":"http://ping.sojson.com","name":"李四"}]
*/
} 這里有一個(gè)注意的地方,就是JSONArray.toList()這個(gè)方法是過(guò)期的。但是不影響使用。
json-lib 介紹到這里就完畢了。然后下面有附件是json-lib 的Jar包。
版權(quán)所屬:SO JSON在線解析
原文地址:http://suancuo.cn/blog/100.html
轉(zhuǎn)載時(shí)必須以鏈接形式注明原始出處及本聲明。
如果本文對(duì)你有幫助,那么請(qǐng)你贊助我,讓我更有激情的寫下去,幫助更多的人。
