Java目標(biāo)和Json之間的互轉(zhuǎn),尋常用的比力多的兩個(gè)類庫是Jackson和Gson,底下紀(jì)錄一下Gson的學(xué)習(xí)使用。
基本看法:
Serialization:序列化,使Java目標(biāo)到Json字符串的歷程。
Deserialization:反序列化,字符串轉(zhuǎn)換成Java目標(biāo)
Gson的兩個(gè)基本辦法
toJson();
fromJson();
Gson的創(chuàng)建辦法一:直接new Gson目標(biāo)
// 使用new辦法
Gson gson = new Gson();
// toJson 將bean目標(biāo)轉(zhuǎn)換為json字符串
String jsonStr = gson.toJson(user, User.class);
// fromJson 將json字符串轉(zhuǎn)為bean目標(biāo)
Student user= gson.fromJson(jsonStr, User.class);
// **序列化List**
String jsonStr2 = gson.toJson(list);
// **反序列化成List時(shí)必要使用到TypeToken getType()**
List<User> retList = gson.fromJson(jsonStr2,new TypeToken<List<User>>(){}.getType());
Gson的創(chuàng)建辦法二:使用GsonBuilder
使用new Gson(),此時(shí)會(huì)創(chuàng)建一個(gè)帶有默許設(shè)置選項(xiàng)的Gson實(shí)例,假如不想使用默許設(shè)置,那么就可以使用GsonBuilder。
//serializeNulls()是GsonBuilder提供的一種設(shè)置,當(dāng)字段值為空或null時(shí),仍然對該字段舉行轉(zhuǎn)換
Gson gson = new GsonBuilder().serializeNulls().create();
使用GsonBuilder創(chuàng)建Gson實(shí)例的步調(diào):
起首創(chuàng)建GsonBuilder,然后調(diào)用GsonBuilder提供的種種設(shè)置辦法舉行設(shè)置,
最初調(diào)用GsonBuilder的create辦法,將基于如今的設(shè)置創(chuàng)建一個(gè)Gson實(shí)例。
GsonBuilder的一些設(shè)置
Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation() //不合錯(cuò)誤沒有效@Expose注解的屬性舉行利用
.enableComplexMapKeySerialization() //當(dāng)Map的key為繁復(fù)目標(biāo)時(shí),必要開啟該辦法
.serializeNulls() //當(dāng)字段值為空或null時(shí),仍然對該字段舉行轉(zhuǎn)換
.setDateFormat("yyyy-MM-dd HH:mm:ss:SSS") //時(shí)間轉(zhuǎn)化為特定格式
.setPrettyPrinting() //對后果舉行格式化,增長換行
.disableHtmlEscaping() //避免特別字符顯現(xiàn)亂碼
.registerTypeAdapter(User.class,new UserAdapter()) //為某特定目標(biāo)設(shè)置安穩(wěn)的序列或反序列辦法,自界說Adapter需完成JsonSerializer大概JsonDeserializer接口
.create();
Gosn對繁復(fù)Map的處理時(shí)必要用到此中的
enableComplexMapKeySerialization() 設(shè)置:
Gson gson = new GsonBuilder()
.enableComplexMapKeySerialization().create(); //開啟繁復(fù)處理Map辦法
Map<List<User>, String> map = new HashMap<List<User>, String>();
// TODO 向map中添加數(shù)據(jù)
String jsonStr = gson.toJson(map); //toJson
Map<List<User>, String> resultMap = gson.fromJson(jsonStr,new TypeToken<Map<List<User>, String>>() {}.getType()); //fromJson
注意:假如Map的key為String,則可以不使用GsonBuilder的
enableComplexMapKeySerialization()辦法,大概直接new Gson();
版權(quán)聲明:本文來自互聯(lián)網(wǎng)整理發(fā)布,如有侵權(quán),聯(lián)系刪除
原文鏈接:http://m.freetextsend.comhttp://m.freetextsend.com/shenghuojineng/53245.html