如何在 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

rootbuild.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

For more info check this.