前言
不知道大家在後端是否有手拼JSON串的經歷,一長串代碼,還很容易出錯,頁面解釋不了還得拿去JSON格式化找錯,實在難受。但自從使用了fastjson之後,小編可以將手拼JSON串的時間去刷刷頭條了。
fastjson
現在JSON協議使用方便,越來越流行,,JSON的處理器有很多,而fastjson相比其他JSON處理器都要快,是阿里的開源框架,被不少企業使用,是一個極其優秀的JSON框架。
優點
- 速度快,無論是序列化還是反序列化,都是快
- 功能強大(支持普通JDK類包括任意Java Bean Class、Collection、Map、Date或enum)
- 零依賴,沒有依賴任何其他庫,只要有JDK就OK
- 體積小,只有500+k,相比其他JSON框架包,小上一圈
用法
1.定義三個字符串
//json字符串-簡單對象型
private static final String JSON_OBJ_STR = "{"name":"黃磊","age":47}";
//json字符串-數組類型
private static final String JSON_ARRAY_STR = "[{"name":"張藝興","age":27},{"name":"黃渤","age":44}]";
//複雜格式json字符串
private static final String COMPLEX_JSON_STR = "{"name":"黃磊","age":47,"program":{"programName":"極限挑戰","id":1270},"mates":[{"name":"張藝興","age":27},{"name":"黃渤","age":44}]}";
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
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
persons = new ArrayList (); 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
mates = new ArrayList (); 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之間的轉換,小編就在此偷下懶,不列了,喜歡的朋友可以試一下,真心好用。
閱讀更多 Kuey的Java全棧日記 的文章