Как использовать цепочку в Kotlin для разбора JSON как python - PullRequest
0 голосов
/ 08 января 2020

Предположим, у меня есть JSON, как показано ниже:

sampleJSON = {

"key1": {
        "nestedkey1": "nestedvalue1",
        "nestedkey2": "nestedvalue2"
},
"key2": {
        "nestedkey3": "nestedvalue3",
        "nestedkey4": "nestedvalue4"
}   
}

Теперь я хочу получить доступ к значению nestedkey2 , поэтому в python (как и в словаре python) ) мы можем получить доступ как,

print(sampleJSON.get("key1").get("nestedkey2"))

Но в kotlin мы должны явно сначала получить внешний JSON объект, а затем внутреннее значение следующим образом:

val outerJO = JSONObject(sampleJSON)
val innerJO = outerJO.getJSONObject("key1")
println(innerJO.get("nestedkey2"))

Is Есть ли способ использовать цепочки, такие как python в Kotlin для доступа к вложенным JSON объектам? Любая библиотека, которая может это сделать?

1 Ответ

1 голос
/ 08 января 2020

Этого легко достичь, используя функции расширения. Например, с библиотекой Gson:

import com.google.gson.JsonElement
import com.google.gson.JsonParser

fun main() {
    val jsonString = """
        {

"key1": {
        "nestedkey1": "nestedvalue1",
        "nestedkey2": "nestedvalue2"
},
"key2": {
        "nestedkey3": "nestedvalue3",
        "nestedkey4": "nestedvalue4"
}   
}
    """
    val json = JsonParser().parse(jsonString)
    val result = json["key1"]["nestedkey2"] // Even shorter that in Python

    println(result)
}

private operator fun JsonElement.get(key: String) = this.asJsonObject.get(key)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...