[英]How to parse a JSON in Kotlin (Anko)?
我已經使用Anko在 Kotlin 中獲得了 JSON 並且效果很好,但我不知道如何訪問每個值。
我有這段代碼可以打印出整個 JSON:
doAsync {
val result = URL("url.json").readText()
uiThread {
longToast(result)
}
}
所以現在我有了整個 JSON,我如何訪問每個字段?
我曾嘗試使用result[0].toString()
和result.get(0).toString()
但它不起作用,因為它打印出result
的第一個字符,即[
使用JSONArray
和JSONObject
解析 json 如下所示。
在Java 中:
JSONArray jsonArray = new JSONArray(result);
for (int i=0; i<jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String user = jsonObject.getString("user");
String password = jsonObject.getString("password");
}
在Kotlin 中:
val jsonArray = JSONArray(result)
for (i in 0 until jsonArray.length()) {
val jsonObject = jsonArray.getJSONObject(i)
val user = jsonObject.getString("user")
val password = jsonObject.getString("password")
}
有一個很酷的 kotlinx 庫,叫做Kotlinx.Serialization
在根build.gradle
buildScript {
...
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
}
使用@Serializable
注釋(用於您的自定義 class )
對於反序列化使用:-
Json.parse(YourClass.serializer() ,resultJson) // this will deserialize
對於序列化使用:-
Json.stringify(YourClass.serializer(), yourClassObj) // this will give string value of the json
有關更多信息,請查看此。
您可以使用 Google 的Gson庫來解析 Json。 您可以點擊鏈接了解如何將其添加到您的項目中。
data class UserCredential(val email:String, val password:String)
然后您可以通過這種方式訪問 json 中的字段
doAsync {
val result = URL("url.json").readText()
val userCredentialList = Gson().fromJson<List<UserCredential>>(result, object :TypeToken<List<UserCredential>>(){}.type)
uiThread {
longToast(result)
}
}
然后您可以使用 json 訪問字段
userCredentialList[0].email
你可以使用這個庫https://github.com/cbeust/klaxon
Klaxon 是一個輕量級庫,用於解析 Kotlin 中的 JSON。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.