目录
一、fastjson简介
1. 什么是fastjson?
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
2.fastjson的优点
2.1 速度快
fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
2.2 使用广泛
fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
2.3 测试完备
fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。
2.4 使用简单
fastjson的API十分简洁。
String text = JSON.toJSONString(obj); //序列化
VO vo = JSON.parseObject("{...}", VO.class); //反序列化
github地址:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN
二、JSON用法
2.1java对象转JSON
/**
* 一、java对象转json
* 执行结果:{"age":20,"name":"zhangsna"}
*/
@Test
public void fun(){
Person p = new Person("zhangsna", 20);
String json = JSON.toJSONString(p);
System.out.println("java对象转json:"+json);
}
2.2 Map转JSON
/**
* Map转换成json
* 执行结果:{"lisi":25,"zhangsan":20}
*/
@Test
public void fun1(){
Map map = new HashMap();
map.put("zhangsan",20);
map.put("lisi",25);
String json = JSON.toJSONString(map);
System.out.println("Map转换成json"+json);
}
2.3List转JSON
/**
* List转换成json
* 执行结果:[{"age":20,"name":"zhangsna"},{"age":25,"name":"lisi"}]
*/
@Test
public void fun2(){
ArrayList list = new ArrayList();
list.add(new Person("zhangsna",20));
list.add(new Person("lisi",25));
String json = JSON.toJSONString(list);
System.out.println("List转json:"+json);
}
2.4json串转java对象
/**
* json串转java对象
* 执行结果:
* 姓名:zhangsna
* 年龄:20
*/
@Test
public void fun4(){
String str="{\"age\":20,\"name\":\"zhangsna\"}";
Person person = JSON.parseObject(str, Person.class);
System.out.println("姓名:"+ person.getName());
System.out.println("年龄:"+ person.getAge());
}
2.5java对象转与JSONObject 互转
/**
* java对象转jsonObject
* 执行结果:{"name":"zhangsan","age":20}
*
* jsonObject转java对象
* 执行结果:
* 姓名:zhangsan
* 年龄:20
*/
@Test
public void fun5(){
Person p = new Person("zhangsan", 20);
JSONObject jsono = (JSONObject) JSON.toJSON(p);
System.out.println(jsono);
Person person = JSON.toJavaObject(jsono, Person.class);
System.out.println("姓名:"+person.getName());
System.out.println("年龄:"+person.getAge());
}
三、JSONObject用法
JSONObject类本身是一个Map,所以学习它很方便。
3.1JSONObject使用
/**
* JSONObject使用
* JSONObject就是一个map
*/
@Test
public void fun6(){
JSONObject jsono = new JSONObject();
jsono.put("zhangsan",20);
jsono.put("lisi",22);
jsono.put("wngwu",18);
String json = jsono.toJSONString();
System.out.println(json);
}
3.2 java对象转与JSONObject
/**
* JSONObject使用
* java对象转json
* 执行结果:{"age":20,"name":"zhangsna"}
*
*/
@Test
public void fun8(){
Person p = new Person("zhangsna",20);
JSONObject jsono = new JSONObject();
String json = jsono.toJSONString(p);
System.out.println("java对象转JSONObject:"+json);
}
3.3Map转JSONObject
/**
*JSONObject使用
* Map转json
* 执行结果:
* {"lisi":20,"zhangsan":20,"wangwu":20}
*/
@Test
public void fun7(){
Map map = new HashMap();
map.put("zhangsan",20);
map.put("lisi",20);
map.put("wangwu",20);
JSONObject jsono = new JSONObject();
String json = jsono.toJSONString(map);
System.out.println(json);
}
四、JSONArray用法
4.1List转JSONArray
JSONArray本身是一个List,所以使用起来很方便。
/**
* JSONArray使用
* 执行结果:
* [{"age":20,"name":"zhangsan"},{"age":22,"name":"lisi"}]
*/
@Test
public void fun9(){
JSONArray jsona = new JSONArray();
jsona.add(new Person("zhangsan",20));
jsona.add(new Person("lisi",22));
String json = jsona.toJSONString();
System.out.println(json);
}