在Android開(kāi)發(fā)中,我們經(jīng)常需要從服務(wù)器端獲取json數(shù)據(jù),然后解析成Java對(duì)象進(jìn)行業(yè)務(wù)處理。為了方便,我們可以使用Google開(kāi)源的gson庫(kù)來(lái)解析json數(shù)據(jù)。下面我們來(lái)看一下如何使用gson來(lái)請(qǐng)求json數(shù)據(jù)。
//引入gson庫(kù)的依賴(lài) dependencies { implementation 'com.google.code.gson:gson:2.8.5' }
我們先定義一個(gè)Java Bean類(lèi),用來(lái)存儲(chǔ)json數(shù)據(jù)的各個(gè)字段:
public class User { private String name; private int age; private Listinterests; //getters and setters... }
接著,在Activity中創(chuàng)建一個(gè)HttpURLConnection對(duì)象來(lái)請(qǐng)求json數(shù)據(jù):
try { URL url = new URL("http://example.com/user.json"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); //讀取請(qǐng)求數(shù)據(jù)流 InputStream inputStream = connection.getInputStream(); //把數(shù)據(jù)流轉(zhuǎn)換成字符串 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder sb = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { sb.append(line); } String json = sb.toString(); //解析json數(shù)據(jù) Gson gson = new Gson(); User user = gson.fromJson(json, User.class); //使用解析后的Java對(duì)象進(jìn)行業(yè)務(wù)處理 } catch (Exception e) { e.printStackTrace(); }
上面的代碼中,先將請(qǐng)求的數(shù)據(jù)流轉(zhuǎn)換成字符串,然后再使用gson的fromJson方法將json字符串解析成Java對(duì)象。這樣我們就可以使用解析后的Java對(duì)象來(lái)進(jìn)行業(yè)務(wù)處理了。
總之,如果我們想要使用Java對(duì)象來(lái)操作json數(shù)據(jù),就可以通過(guò)gson來(lái)實(shí)現(xiàn)。同時(shí),我們也應(yīng)該注意網(wǎng)絡(luò)請(qǐng)求需要在子線(xiàn)程中進(jìn)行。