標(biāo)簽(空格分隔): Android
今天主要解決歷史遺留問(wèn)題,而且工作效率比較低orz
JSON 與 Gson
眾所周知,JSON(JavaScript Object Notation, JS 對(duì)象簡(jiǎn)譜) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于 ECMAScript (歐洲計(jì)算機(jī)協(xié)會(huì)制定的js規(guī)范)的一個(gè)子集,采用完全獨(dú)立于編程語(yǔ)言的文本格式來(lái)存儲(chǔ)和表示數(shù)據(jù)。常見格式為鍵值對(duì)形式,如下
{"userName": "oven", "userId": "1234567"}
而GSON是google推出的一個(gè)實(shí)現(xiàn) JSON 與 Java 對(duì)象間轉(zhuǎn)化的庫(kù),它可以輕松實(shí)現(xiàn) JSON 與 Java 對(duì)象間的轉(zhuǎn)換
GsonFormat 插件的用法
在Android Studio中,可以利用 GsonFormat插件,快速創(chuàng)建符合 Gson要求的 javaBean 。GSONFormat地址:https://github.com/zzz40500/GsonFormat
使用過(guò)程
-
將需要解析的 json 數(shù)據(jù)直接粘貼到框內(nèi),
image.png
小tip:應(yīng)該直接把從接口拿到的數(shù)據(jù)粘貼,避免 api 文檔格式問(wèn)題帶來(lái)的各種不必要的 bug
-
勾選需要的屬性
微信圖片_20190208215423.png 自動(dòng)生成代碼
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public static JobBean objectFromData(String str) {
return new com.google.gson.Gson().fromJson(str, JobBean.class);
}
4.在所需界面調(diào)用即可
JobBean job = JobBean.objectFromData(jsonstr);
其他
- 使用 Gson 將數(shù)據(jù)解析成一個(gè)對(duì)象
Gson gson = new Gson();
Person person = gson.fromJson(jsonData,Person.class);
- 使用 Gson 將數(shù)據(jù)解析成一個(gè) List
List<Person> people = gson.fromJson(jsonData,new TypeToken<List<Person>>){}.getType());
借助TypeToken將期望解析成的數(shù)據(jù)類型傳入fromJson()方法中
實(shí)際上,在使用Gsonformat時(shí)能自動(dòng)生成對(duì)應(yīng)的 getobjectfromdata 或 getArrayfromdata 方法,按需選擇即可
- SerializedName 的用法
一種協(xié)調(diào)后臺(tái)傳回?cái)?shù)據(jù)的字段命名格式與Java命名習(xí)慣不同的注釋方式
@SerializedName("user_name")
private String userName;

