前言
不知道大家在后端是否有手拼JSON串的经历,一长串代码,还很容易出错,页面解释不了还得拿去JSON格式化找错,实在难受。但自从使用了 fastjson 之后,小编可以将手拼 json 串的时间去刷刷头条了。
fastjson
现在JSON协议使用方便,越来越流行,,JSON的处理器有很多,而fastjson相比其他JSON处理器都要快,是阿里的开源框架,被不少企业使用,是一个极其优秀的JSON框架。
优点
- 速度快,无论是 序列化 还是反序列化,都是快
- 功能强大(支持普通JDK类包括任意Java bean Class、Collection、Map、Date或enum)
- 零依赖,没有依赖任何其他库,只要有JDK就OK
- 体积小,只有500+k,相比其他JSON框架包,小上一圈
用法
1.定义三个 字符串
2、JSON格式字符串与JSON对象之间的转换
2.1、JSON字符串-简单对象型与JSONObject之间的转换
2.1.1、JSON字符串转简单对象
代码:
JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);
System.out.println(“name:” + jsonObject.getString(“name”) + ” age:” + jsonObject.getInteger(“age”));
输出:
name:黄磊 age:47
2.1.2、简单对象转JSON字符串
代码:
//已知JSONObject,目标要转换为json字符串
JSONObject jsonObject = JSONObject.parseObject(JSON_OBJ_STR);
// 第一种方式
String jsonString = JSONObject.toJSONString(jsonObject);
System.out.println(“第一种方式:”+jsonString);
// 第二种方式
jsonString = jsonObject.toJSONString();
System.out.println(“第二种方式:”+jsonString);
输出:
第一种方式:{“name”:”黄磊”,”age”:47}
第二种方式:{“name”:”黄磊”,”age”:47}
2.2、json字符串(数组类型)与JSONArray之间的转换
2.2.1、JSON字符串(数组类型)转JSONArray
代码:

输出:
name: 张艺兴 age: 27
name: 黄渤 age: 44
2.2.2、JSONArray转JSON字符串(数组类型)
代码:
//已知JSONArray,目标要转换为json字符串
JSONArray jsonArray = JSONArray.parseArray(JSON_ARRAY_STR);
String jsonString = JSONArray.toJSONString(jsonArray);
System.out.println(jsonString);
输出:
[{“name”:”张艺兴”,”age”:27},{“name”:”黄渤”,”age”:44}]
2.3、复杂json格式字符串与JSONObject之间的转换
2.3.1、复杂JSON格式字符串转JSONObject
代码:

输出:
name: 黄磊 age: 47
programName: 极限挑战 id: 1270
mateName: 张艺兴 mateAge: 27
mateName: 黄渤 mateAge: 44
2.3.2、JSONObject转复杂JSON格式字符串
代码:
//复杂JSONObject,目标要转换为json字符串
JSONObject jsonObject = JSONObject.parseObject(COMPLEX_JSON_STR);
String jsonString = JSONObject.toJSONString(jsonObject);
System.out.println(jsonString);
输出:
{“mates”:[{“name”:”张艺兴”,”age”:27},{“name”:”黄渤”,”age”:44}],”name”:”黄磊”,”program”:{“programName”:”极限挑战”,”id”:1270},”age”:47}
3、JSON格式字符串与javaBean之间的转换
3.1、JSON字符串与javaBean之间的转换
3.1.1、JSON字符串转javaBean
代码:
Person person = JSONObject.parseObject(JSON_OBJ_STR, Person.class);
System.out.println(person);
输出:
com.conta.bean.Person@3d82c5f3
3.1.2、javaBean转JSON字符串
代码:
Person person = new Person(“孙红雷”, 48);
String jsonString = JSONObject.toJSONString(person);
System.out.println(jsonString);
输出:
{“age”:48,”name”:”孙红雷”}
3.2、JSON字符串-数组类型与javaBean之间的转换
3.2.1、JSON字符串-数组类型转javaBean
代码:
List<Person> personList = JSONArray.parseArray(JSON_ARRAY_STR, Person.class);
System.out.println(“Person: ” + personList);
输出:
Person: [com.conta.bean.Person@2b05039f, com.conta.bean.Person@61e717c2]
3.2.2、javaBean转JSON字符串-数组类型
代码:
Person p1 = new Person(“王迅”, 44);
Person p2 = new Person(“罗志祥”, 39);
List<Person> persons = new ArrayList<Person>();
persons.add(p1);
persons.add(p2);
String jsonString = JSONArray.toJSONString(persons);
System.out.println(jsonString);
输出:
[{“age”:44,”name”:”王迅”},{“age”:39,”name”:”罗志祥”}]
3.3、复杂json格式字符串与javaBean之间的转换
3.3.1、复杂json格式字符串转javaBean
代码:
Person person = JSONObject.parseObject(COMPLEX_JSON_STR, Person.class);
System.out.println(person);
输出:
com.conta.bean.Person@2b05039f
3.3.2、javaBean转复杂json格式字符串
代码:
Person p1 = new Person(“王迅”,44);
Person p2 = new Person(“罗志祥”,39);
List<Person> mates = new ArrayList<Person>();
mates.add(p1);
mates.add(p2);
Program program = new Program(“极限挑战”,”1270″);
Person person = new Person(“黄渤”,44,program,mates);
String jsonString = JSONObject.toJSONString(person);
System.out.println(jsonString);
输出:
{“age”:44,”mates”:[{“age”:44,”name”:”王迅”},{“age”:39,”name”:”罗志祥”}],”name”:”黄渤”,”program”:{“id”:”1270″,”programName”:”极限挑战”}}
还有一种是javaBean与JSONObject之间的转换,小编就在此偷下懒,不列了,喜欢的朋友可以试一下,真心好用。