Android 以干净的方式使用kotlin获取特定的JSONObject

Android 以干净的方式使用kotlin获取特定的JSONObject,android,json,kotlin,Android,Json,Kotlin,有没有更干净的方法来获取值?我不是Kotlin的专家,我似乎在网上找不到太多 var options = request.getJSONObject("optionsObject"); var readingPosition = options.getJSONObject("readingPosition"); var selector = readingPosition.getJSONObject("selector"); var value = selector.getString("val

有没有更干净的方法来获取值?我不是Kotlin的专家,我似乎在网上找不到太多

var options = request.getJSONObject("optionsObject");
var readingPosition = options.getJSONObject("readingPosition");
var selector = readingPosition.getJSONObject("selector");
var value = selector.getString("value");
json:

{
   "optionsObject":{
      "readingPosition":{
         "format":"application\/epub+zip",
         "selector":{
            "type":"FragmentSelector",
            "conformsTo":"http:\/\/www.idpf.org\/epub\/linking\/cfi\/epub-cfi.html",
            "value":"epubcfi(\/6\/2!\/0)"
         }
      },
      "readingProgress":0
   }
}

如果你正在使用改装,只需制作一个类

data class youcalssname(
 val yourJsonobjet:YourJsonobjectType,
 //like this
 val value:String,
 )

并且可以轻松地获取数据yourclassname.value进行更多检查

idk对我来说太过分了对于这种json响应,我认为您的代码干净且不那么复杂。我同意,但我仍然感到惊讶的是,如果你在很多api中得到这种类型的响应,没有比创建一个pojo类或模型并获取数据并将其设置到模型类中并获取数据更有效的方法了,但是如果它看起来你只得到一次响应,那么它很干净,也不那么复杂,如果你只得到一次响应,那么它很好,但是如果在不同的api、不同的活动和片段中得到相同的响应,则必须重新编写所有代码以获取数据,但如果使用模型,则只需将模型和响应传递到模型中,而无需调用request.getJSONObject(“optionObject”)。您可以简单地将模型从一个活动传递到另一个活动,这样可以减少代码的复杂性,如果来自服务器的api Response对象发生更改,则必须在每个位置进行更改,但如果使用模型,则只需在模型中进行更改。