Android基礎之json資料解析
這次來聊聊Android中json資料的解析,既然是基礎就要求只要你看一遍就必須會的,不牽涉到太多的複雜邏輯,目的就是讓你初步認識json資料的解析和學會對簡單的json資料進行解析。
首先第一步我們先來準備一個json的資料,這裡我們建立一個最簡單的json資料,它長這樣
[{"id":"1","name":"張三"},{"id":"2","name":"李四"}]
關於json語法我們這裡不做介紹,可自行搜尋學習,以上就是最簡單的一個json資料了,這裡其實是一個json陣列了,裡面包含兩條內容。
接下來我們建立新專案,在main資料夾下建立一個新的資料夾assets,將json資料放到這個資料夾下。
第一步:獲取到我們的json資料,可使用如下程式碼完成
InputStream stream = getAssets().open("data.json");
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
StringBuilder response = new StringBuilder();
String line = "";
while ((line=reader.readLine())!=null){
response.append(line);
}
String string = response.toString();
這裡將建立的json資料命名為data.json,上述程式碼中得到的string就是我們拿到的json資料了。
這裡先來說一下json資料解析的常用方法,這裡介紹兩種常用的解析方法,第一種是直接使用java中的方法也即是官方提供的JSONObiect,另外介紹一種開源庫是谷歌的GSON,這兩種是比較常用的,當然還有其他很多比較優秀的開源框架,這裡不再一一介紹,感興趣的可以自己百度學習一下
第二步:開始解析json資料
我們先使用官方提供的JSONObject來對資料進行解析,其實這種方法是JSONObject和JSONArray一起配合使用的,我們來看下程式碼
//不使用開源庫,使用原生JSONObject解析json資料
JSONArray jsonArray = new JSONArray(string); for (int i = 0;i<jsonArray.length();i++)
{
JSONObject jsonObject = jsonArray.getJSONObject(i);
System.out.println(jsonObject.getString("name"));
}
以上我們首先建立一個JSONArray將資料填充進去,緊接著使用for迴圈遍歷陣列元素,然後建立JSONObject物件就可以通過呼叫JSONObject的getString方法直接拿到json資料中的值了。
接下來我們使用谷歌的開源庫GSON來對資料進行解析,在使用GSON的時候有寫小細節需要注意,我們先來看下如下程式碼
Gson gson = new Gson();
Person person = gson.fromJson(string,Person.class);
System.out.println(person.getName());
首先在使用GSON的時候要求我們先建立一個類,比如我們要解析如下json資料
{"id":"1","name":"張三"}
那我們要新建一個Person類,並且加上name和id兩個欄位,設定好set和get方法,然後我們通過上述程式碼就可以對這段json資料進行解析,通過建立的person物件就可以直接通過set和get方法拿到我們想要的值了,但是如果是一下jason資料,再使用上述方法可就會出錯了
[{"id":"1","name":"張三"}]
這個時候如果我們繼續使用如下程式碼就會報錯
Gson gson = new Gson();
Person person = gson.fromJson(string,Person.class);
System.out.println(person.getName());
為什麼呢?因為這種方法不能解析json陣列,那麼對於資料是陣列型別的json資料,我們用Gson該如何解析呢?這個只是稍微麻煩了一點點,我們需要藉助TypeToken將期望解析成的資料型別傳入到fromJson()方法中,程式碼如下
Gson gson = new Gson();
List<Person> personList = gson.fromJson(string, new TypeToken<List<Person>>(){}.getType());
for (Person person: personList){
System.out.println(person.getName());
}
通過上述程式碼我們就可以將資料是陣列的json資料進行解析了,在此之前我們說過了在使用GSON的時候需要注意一點就是陣列這塊,我們要記住如下兩段json資料的區別
[{"id":"1","name":"張三"}]
{"id":"1","name":"張三"}
這塊如果不加小心,在使用GSON的時候可能就會遇到點小bug了
以上就是Android中對json資料進行簡單解析的使用方法了,因為是基礎知識介紹,所以選取了非常簡單的json資料,也只簡單的介紹了JSONObject和GSON的簡單用法,也許你會感到json的資料解析真簡單,但是當json資料變得複雜的時候你就會覺得,json的資料解析還是有點挑戰性的,好了,就到這,謝謝各位看官!
相關文章
- Android基礎之Activity全解析Android
- Flutter基礎(十一)網路請求(Dio)與JSON資料解析FlutterJSON
- Flutter 基礎(十一)網路請求(Dio)與 JSON 資料解析FlutterJSON
- 解析大資料json大資料JSON
- Jackson 解析json資料之忽略解析欄位註解@JsonIgnorePropertiesJSON
- Java基礎-處理json字串解析案例JavaJSON字串
- 基礎之const解析
- Android 基礎之 HandlerAndroid
- 使用JSONPath解析JSON資料JSON
- Python中解析json資料PythonJSON
- PostgreSQL 資料頁Page解析(1)- 基礎SQL
- android使用Gson來解析jsonAndroidJSON
- android解析HashMap格式的jsonAndroidHashMapJSON
- Go - 如何解析 JSON 資料?GoJSON
- 【json】json基礎知識JSON
- Go之json資料GoJSON
- 🎩 JSON Wizard for Mac - 解析你的 JSON 資料!🔮JSONMac
- 小白系列:資料庫基礎知識解析資料庫
- 將物件解析為JSON資料和將JSON資料解析為物件的簡單例項物件JSON單例
- 大資料:大資料之基礎語法大資料
- python基礎之資料型別Python資料型別
- Python基礎之Python資料世界Python
- [java基礎]之資料型別Java資料型別
- C/C++ Qt 運用JSON解析庫 [基礎篇]C++QTJSON
- SpringBoot基礎實戰系列(二)springboot解析json與HttpMessageConverterSpring BootJSONHTTP
- MySQL之json資料操作MySqlJSON
- 大資料入門:Hadoop Yarn元件基礎解析大資料HadoopYarn元件
- dubbo原始碼解析之基礎篇原始碼
- Python基礎之四:Python3 基礎資料型別Python資料型別
- 基礎資料結構之遞迴資料結構遞迴
- 基礎資料結構之陣列資料結構陣列
- Go 基礎之基本資料型別Go資料型別
- 大資料學習之Linux基礎大資料Linux
- Django基礎之七(資料庫操作)Django資料庫
- Redis基礎資料結構之字串Redis資料結構字串
- Redis基礎資料結構之MapRedis資料結構
- Redis基礎資料結構之SkipListRedis資料結構
- Gradle系列之Android Gradle基礎配置GradleAndroid
- Android NDK開發之JNI基礎Android