簡體   English   中英

如何解析 Kotlin (Anko) 中的 JSON?

[英]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的第一個字符,即[

使用JSONArrayJSONObject解析 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM