Android解析JSON格式數據的兩種方式(JSONObject和Gson)
Json數據
接下來主要學習在Android中使用兩種解析方式:JSONObject和Gson。
JSONObject
比如我們有如下格式的Json數據:
[{"id":"1","verison":"1.0","name":"shufu"}, {"id":"2","verison":"2.2","name":"pangzi"}, {"id":"3","verison":"3.3","name":"john"}]
使用官方提供的JSONObject。解析代碼如下所示:
private fun parserJSONWithJSONObject(jsonData: String) { try { val jsonArray = JSONArray(jsonData) for (i in 0 until jsonArray.length()) { val jsonObject = jsonArray.getJSONObject(i) val id = jsonObject.getString("id") val name = jsonObject.getString("name") val version = jsonObject.getString("version") Log.d("MainActivity", "id is $id") Log.d("MainActivity", "name is $name") Log.d("MainActivity", "version is $version") } } catch (e: Exception) { e.printStackTrace() } }
解釋:首先將數據傳入JSONArray對象中,然后循環(huán)遍歷,從中取出的每一個元素都是一個JSONObject對象,每個JSONObject對象中包含了id、name、version數據,只需要調用getString()方法就能取出。
GSON
這是Google提供的GSON開源庫,使用也很簡單。它的強大之處在于可以將一段JSON格式的字符串自動映射成一個對象,從而不需要我們手動編寫代碼解析了。
添加依賴
implementation 'com.google.code.gson:gson:2.8.6'
比如一段JSON格式的數據如下:
{"name":"John","age":18}
那么可以定義一個Person類,加入name和age字段,然后只需調用以下代碼就能將JSON數據自動解析成一個Person對象了:
val gson = Gson() val person = gson.fromJson(jsonData, Person::class.java)
如果需要解析的是一段JSON數組,比如:
[{"name":"John","age":18}, {"name":"Jack","age":19}, {"name":"shufu","age":20}]
這個時候需要借助TypeToken將期望解析成的數據類型傳入fromJson()方法中:
val typeOf = object : TypeToken<List<Person>>() {}.type val people = gson.fromJson<List<Person>>(jsonData, typeOf)
實際操作
實體類
新建一個App類,加入id、name、version字段:
class App(val id: String, val name: String, val version: String)
MainActivity代碼:
private fun parseJSONWithGSON(jsonData: String) { val gson = Gson() val typeOf = object : TypeToken<List<App>>() {}.type val appList = gson.fromJson<List<App>>(jsonData,typeOf) for (app in appList) { Log.d("MainActivity", "id is ${app.id}") Log.d("MainActivity", "name is ${app.name}") Log.d("MainActivity", "version is ${app.version}") } }
總結
到此這篇關于Android解析JSON格式數據的兩種方式的文章就介紹到這了,更多相關Android解析JSON格式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在Ubuntu下搭建Android開發(fā)環(huán)境
對一個程序猿來說,裝好系統(tǒng)之后的第一件事,一定是搭建開發(fā)環(huán)境,已經安裝各種開發(fā)工具,以便之后能方便順利地進行程序的開發(fā)。簡單的介紹下在Ubuntu環(huán)境下搭建Android開發(fā)環(huán)境,雖然基本上和在Windows下沒有太大差別,但有些細節(jié)上還是很值得注意的。2014-07-07Android實戰(zhàn)RecyclerView頭部尾部添加方法示例
本篇文章主要介紹了Android實戰(zhàn)RecyclerView頭部尾部添加方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11Android編程實現多列顯示的下拉列表框Spinner功能示例
這篇文章主要介紹了Android編程實現多列顯示的下拉列表框Spinner功能,結合具體實例形式分析了Android多列表顯示功能的相關布局操作實現技巧,需要的朋友可以參考下2017-06-06