Как разобрать JSON в Kotlin (Anko)? - PullRequest
0 голосов
/ 31 октября 2019

Я использовал Anko , чтобы получить JSON в Kotlin, и он хорошо работает, но я не знаю, как я могу получить доступ к каждому значению.

У меня есть этот код, который печатаетвесь JSON:

doAsync {
  val result = URL("url.json").readText()
     uiThread {
     longToast(result)
  }
}

Итак, теперь, когда у меня есть весь JSON, как я могу получить доступ к каждому полю?

Я пробовал с result[0].toString() и result.get(0).toString(), но это не такработать, потому что он печатает первый символ result, который [

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Используйте JSONArray и JSONObject для анализа json, как показано ниже.

In 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");
}

In 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")
}
0 голосов
/ 31 октября 2019

Есть классная библиотека kotlinx под названием Kotlinx.Serialization

В root build.gradle

buildScript {
    ...
    classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
}

Использование @Serializable аннотация (для вашего пользовательского класса)

Для десериализации используйте: -

 Json.parse(YourClass.serializer() ,resultJson) // this will deserialize

Для сериализации используйте: -

 Json.stringify(YourClass.serializer(), yourClassObj) // this will give string value of the json

Для получения дополнительной информации проверьте это .

...