解析Kotlin?JSON格式
Kotlin JSON解析
開(kāi)發(fā)環(huán)境就是下面這個(gè)…
一、添加依賴
在build.gradle.kts
文件中添加下面依賴。
dependencies { implementation("com.google.code.gson:gson:2.4") }
二、解析JSON格式字符串
主要解析的格式如下,上面data類(lèi)與下面這個(gè)格式是配套對(duì)著的。{"type":"allData","Dev-Area":"0757","Dev-User":"100001","Dev-Addr":"005","content":{"YxG":"0000000100000000","Ia":0.0,"Ib":0.0,"Ic":0.0,"Io":0.000},"time":1679830981975}
這條JSON格式報(bào)文中"content"
內(nèi)還有其他的成員,如"YxG"
、"Ia"等
,所以json_packet_data
內(nèi)有json_packet_content
這個(gè)變量。
import com.google.gson.annotations.SerializedName data class json_packet_content( @SerializedName("YxG") var yx:String?=null ) data class json_packet_data( //序列名稱為 @SerializedName("Dev-Area") var Area:String? = null, //設(shè)備名稱為 @SerializedName("Dev-User") var User:String? = null, //設(shè)備名稱為 @SerializedName("Dev-Addr") var Addr:String? = null, var type :String? = null, @SerializedName("content") var json_content: json_packet_content? = null )
@SerializedName
可以指定解析成員變量名稱,所以我這里將json_content
這個(gè)變量定向?yàn)楂@取content
里面的變量。其中type
與json
成員變量同名,所以不需要重新定向,不過(guò)加上去@SerializedName("type")
也不是不可以。
下面是主要程序部分
import com.google.gson.Gson import com.google.gson.annotations.SerializedName fun main(args: Array<String>) { val jsonTestString= """{"type":"allData","Dev-Area":"0757","Dev-User":"100001","Dev-Addr":"005","content":{"YxG":"0000000100000000","Ia":0.0,"Ib":0.0,"Ic":0.0,"Io":0.000},"time":1679830981975}""" try { val parseGson = Gson().fromJson(jsonTestString, json_packet_data::class.java) println(parseGson) }catch (e:com.google.gson.JsonParseException){ println("解析異常") } }
運(yùn)行效果如下
然后把data類(lèi)里面的數(shù)據(jù)轉(zhuǎn)換一下,即可完成獲取相應(yīng)的數(shù)據(jù)。
還有另外一種情況,解析數(shù)組??!{"type": [{"wait": "ss"}, {"ss": "22"}]}
情況就比如下面這個(gè)代碼一樣處理,使用List泛型??!
import com.google.gson.Gson import com.google.gson.annotations.SerializedName data class inter_json( var wait:String?=null, var ss:String?=null ) data class json_mode( var type:List<inter_json>?=null ) fun main(args: Array<String>) { val mystring = """{"type": [{"wait": "ss"}, {"ss": "22"}]}""" try { val parseGson = Gson().fromJson(mystring, json_mode::class.java) println(parseGson) }catch (e:com.google.gson.JsonParseException){ println("解析異常") } }
可以看出來(lái),操作方便簡(jiǎn)單,非常的爽?。?!
二、生成JSON格式字符串
主要是解析麻煩,生成還是比較多方法的…比如直接字符串相加…略…
到此這篇關(guān)于Kotlin JSON格式解析的文章就介紹到這了,更多相關(guān)Kotlin JSON格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android入門(mén)之Activity四種啟動(dòng)模式(standard、singleTop、singleTask、singl
當(dāng)應(yīng)用運(yùn)行起來(lái)后就會(huì)開(kāi)啟一條線程,線程中會(huì)運(yùn)行一個(gè)任務(wù)棧,當(dāng)Activity實(shí)例創(chuàng)建后就會(huì)放入任務(wù)棧中。Activity啟動(dòng)模式的設(shè)置在AndroidManifest.xml文件中,通過(guò)配置Activity的屬性android:launchMode=""設(shè)置2015-12-12Android View源碼解讀 DecorView與ViewRootImpl淺談
這篇文章主要解讀了Android View源碼,為大家詳細(xì)介紹DecorView與ViewRootImpl,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Android打造屬于自己的新聞平臺(tái)(客戶端+服務(wù)器)
這篇文章主要為大家詳細(xì)介紹了Android打造屬于自己的新聞平臺(tái)的相關(guān)資料,Android實(shí)現(xiàn)新聞客戶端服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06android?studio實(shí)現(xiàn)上傳圖片到j(luò)ava服務(wù)器
這篇文章主要為大家詳細(xì)介紹了android?studio實(shí)現(xiàn)上傳圖片到j(luò)ava服務(wù)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Android?studio實(shí)現(xiàn)日期?、時(shí)間選擇器與進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了Android?studio實(shí)現(xiàn)日期、時(shí)間選擇器與進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01android實(shí)現(xiàn)圖片驗(yàn)證碼方法解析(自繪控件)
本文主要介紹了android自繪控件的應(yīng)用--實(shí)現(xiàn)圖片驗(yàn)證碼方法案例,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01詳解Android權(quán)限管理之Android 6.0運(yùn)行時(shí)權(quán)限及解決辦法
本篇文章主要介紹Android權(quán)限管理之Android 6.0運(yùn)行時(shí)權(quán)限及解決辦法,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-11-11