聽(tīng)聞阿里的fastJson特別的厲害.就下載了,稍微的試了一下:
本次使用:fastjson-1.2.8.jar
本次只是比較簡(jiǎn)單的對(duì)象和json之間的轉(zhuǎn)換,沒(méi)有涉及到復(fù)雜對(duì)象與json之間的轉(zhuǎn)換.
有兩個(gè)實(shí)體類,User和GroupBean,本次暫時(shí)只是涉及到User類
public class User {
private String id;
private String name;
private Integer age;
補(bǔ)充set和get方法}
public class GroupBean {
private String id;
private List list=new ArrayList();
private Set? set=new HashSet();
private Map map=new HashMap();
補(bǔ)充set和get方法}
import org.junit.Test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.parser.Feature;
public class MyTest {
//簡(jiǎn)單對(duì)象的轉(zhuǎn)換
@Test
public void test1() {
User user1 = new User("1","caocao",20);
User user2 = new User("2","liubei",22);
List list=new ArrayList();
Set? set=new HashSet();
Map map=new HashMap();
list.add(user1);
list.add(user2);
set.add(user1);
set.add(user2);
map.put("user1", user1);
map.put("user2", user2);
//把對(duì)象轉(zhuǎn)換成json
String jsonString1 = JSON.toJSONString(user1);
String jsonString2= JSON.toJSONString(user2);
System.out.println(jsonString1);? //打印轉(zhuǎn)換成json的字符串
//{"age":20,"id":"1","name":"caocao"}
System.out.println(user1);? //直接打印對(duì)象
//User [id=1, name=caocao, age=20]
System.out.println(jsonString2);
//{"age":22,"id":"2","name":"liubei"}
System.out.println(user2);
//User [id=2, name=liubei, age=22]
String jsonString3 = JSON.toJSONString(list);
System.out.println(jsonString3);
//[{"age":20,"id":"1","name":"caocao"},{"age":22,"id":"2","name":"liubei"}]
String jsonString4 = JSON.toJSONString(set);
System.out.println(jsonString4);
//[{"age":20,"id":"1","name":"caocao"},{"age":22,"id":"2","name":"liubei"}]
String jsonString5 = JSON.toJSONString(map);
System.out.println(jsonString5);
//{"user2":{"age":22,"id":"2","name":"liubei"},"user1":{"age":20,"id":"1","name":"caocao"}}
//把json轉(zhuǎn)換成bean
Object parse1 = JSON.parse(jsonString1);? //直接進(jìn)行解析
System.out.println(parse1);
//{"id":"1","name":"caocao","age":20}
//強(qiáng)轉(zhuǎn)類型,不能進(jìn)行強(qiáng)制類型的轉(zhuǎn)換,會(huì)報(bào)出類轉(zhuǎn)換異常的
//User parse2=(User)parse1;
User parseObject = JSON.parseObject(jsonString2, User.class);? //添加類進(jìn)行解析,直接得到bean
System.out.println(parseObject+"~~"+parseObject.getName());
//User [id=2, name=liubei, age=22]~~liubei
//直接解析出報(bào)錯(cuò)
//?? ?JSONObject parseObject2 = JSON.parseObject(jsonString3);
//添加類型解析
List parseObject2 = JSON.parseObject(jsonString3, new TypeReference>() {});
System.out.println(parseObject2);
//[User [id=1, name=caocao, age=20], User [id=2, name=liubei, age=22]]
//按照數(shù)據(jù)的類型解析
JSONArray parseArray = JSON.parseArray(jsonString3);
System.out.println(parseArray);
//[{"id":"1","name":"caocao","age":20},{"id":"2","name":"liubei","age":22}]
//解析出具體的map類型
Map parseObject5 = JSON.parseObject(jsonString5, new TypeReference>(){});
System.out.println(parseObject5);
//{user2=User [id=2, name=liubei, age=22], user1=User [id=1, name=caocao, age=20]}
//粗略的解析出了map
Map parseObject6 = JSON.parseObject(jsonString5, Map.class);
System.out.println(parseObject6);
//{user2={"id":"2","name":"liubei","age":22}, user1={"id":"1","name":"caocao","age":20}}
}
}
本次博客就先到這里,再過(guò)段時(shí)間我會(huì)把復(fù)雜和json之間的解析發(fā)出來(lái).
如果錯(cuò)誤,敬請(qǐng)指正
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-18045781879.2.33c5236bZlPDUM&id=569353717228
深入理解Java虛擬機(jī)(jvm性能調(diào)優(yōu)+內(nèi)存模型+虛擬機(jī)原理)? ?很不錯(cuò)的虛擬機(jī)視頻教程.