「Java」提升工作效率,JSON字符串轉換一句搞定——fastjson

前言

不知道大家在後端是否有手拼JSON串的經歷,一長串代碼,還很容易出錯,頁面解釋不了還得拿去JSON格式化找錯,實在難受。但自從使用了fastjson之後,小編可以將手拼JSON串的時間去刷刷頭條了。

fastjson

現在JSON協議使用方便,越來越流行,,JSON的處理器有很多,而fastjson相比其他JSON處理器都要快,是阿里的開源框架,被不少企業使用,是一個極其優秀的JSON框架。

優點

  1. 速度快,無論是序列化還是反序列化,都是快
  2. 功能強大(支持普通JDK類包括任意Java Bean Class、Collection、Map、Date或enum)
  3. 零依賴,沒有依賴任何其他庫,只要有JDK就OK
  4. 體積小,只有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

代碼:

「Java」提升工作效率,JSON字符串轉換一句搞定——fastjson

輸出:

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

代碼:

「Java」提升工作效率,JSON字符串轉換一句搞定——fastjson

輸出:

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之間的轉換,小編就在此偷下懶,不列了,喜歡的朋友可以試一下,真心好用。


分享到:


相關文章: