在Android開(kāi)發(fā)中,我們常常需要處理來(lái)自服務(wù)器的JSON數(shù)據(jù)。雖然Java內(nèi)置了處理JSON的類庫(kù),但是對(duì)于復(fù)雜的JSON數(shù)據(jù)結(jié)構(gòu),仍然需要花費(fèi)大量的時(shí)間和代碼來(lái)解析數(shù)據(jù)。因此,許多開(kāi)發(fā)者選擇使用Gson庫(kù)。
Gson是由Google開(kāi)發(fā)的一組處理JSON的庫(kù)。它可以將JSON對(duì)象轉(zhuǎn)換為Java對(duì)象,反之亦然。Gson使用起來(lái)非常簡(jiǎn)單,但是對(duì)于復(fù)雜的JSON數(shù)據(jù)結(jié)構(gòu),Gson的使用也相對(duì)繁瑣。為此,我們可以將一些功能封裝起來(lái),以便更方便地使用。
public class GsonUtils { private static Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd HH:mm:ss") .create(); public staticT jsonToBean(String json, Class clazz) { return gson.fromJson(json, clazz); } public static List jsonToList(String json, Class clazz) { Type type = new TypeToken >() {}.getType(); ArrayList jsonObjects = gson.fromJson(json, type); ArrayList arrayList = new ArrayList<>(); for (JsonObject jsonObject : jsonObjects) { arrayList.add(gson.fromJson(jsonObject, clazz)); } return arrayList; } public static String beanToJson(Object obj) { return gson.toJson(obj); } }
該工具類中包含了三個(gè)靜態(tài)方法,分別用于將JSON字符串轉(zhuǎn)換為Java對(duì)象、將JSON字符串轉(zhuǎn)換為Java集合、將Java對(duì)象轉(zhuǎn)換為JSON字符串。其中,將JSON字符串轉(zhuǎn)換為Java集合是一個(gè)比較復(fù)雜的過(guò)程,如上述代碼所示。
使用上述GsonUtils工具類,我們可以更方便地將JSON轉(zhuǎn)換為Java對(duì)象。
String json = "{...}"; //json字符串 User user = GsonUtils.jsonToBean(json, User.class); //將json字符串轉(zhuǎn)換為User對(duì)象
或者我們也可以將JSON轉(zhuǎn)換為Java集合。
String json = "[{...}, {...}, {...}]"; //json字符串 ListuserList = GsonUtils.jsonToList(json, User.class); //將json字符串轉(zhuǎn)換為User集合
可以看到,使用GsonUtils工具類,我們可以省去大量的代碼,使代碼更加簡(jiǎn)潔易懂。