访问嵌套的JSON值的第一个元素

时间:2019-06-25 21:50:21

标签: android kotlin

我试图弄清楚如何访问嵌套的JSON属性,第一个元素。基本上,我的数据如下所示:

const url = process.env.url || false
if(!url) {
   console.log('error..'); 
   process.exit(0)
}

...

在我的代码中,我正在做类似的事情:

{ 
  "message": "Error scenario",
  "errors": {
   "error_one": "error_one_message",
   "error_two": "error_two"
  }
}

我应该在代码中进行哪些更改,以使变量// it is an instance of HttpException val message = JsonParser().parse(it.response().errorBody()?.string()) .asJsonOject["message"] .asString 的值为message

3 个答案:

答案 0 :(得分:1)

我认为这种方式可行

    val message = JsonParser().parse(it.response().errorBody()?.string())
                       .asJsonObject["errors"]["error_one"]
                       .asString

但最好在这里使用像Gson这样的转换库是GitHub Link

答案 1 :(得分:1)

尝试一下?

val obj = JSONObject("ur Json string")
val error1 = obj.getJSONObject("errors").getString("error_one")

答案 2 :(得分:1)

//the whole json object
val baseJsonResponse = JSONObject("JSON response")
//the error json object
val errorObject = baseJsonResponse.getJSONObject("error")

//get the string
val location = errorObject.getString("error_one")

修改: 由于您需要基础对象的第一个元素,因此需要遍历键以获得第一个键。在Java中为:

String keyForFirstJsonbject = errorObject.keySet().iterator().next();

在Kotlin中我猜测是:

val keyForFirstJsonbject = errorObject.keys.elementAt(0)

然后结束:

//get the string
val location = errorObject.getString(keyForFirstJsonbject)