Доступ к вложенному JSON-значению первого элемента - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь выяснить, как получить доступ к вложенным атрибутам JSON, первый элемент. По сути, мои данные выглядят следующим образом:

{ 
  "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 имела значение error_one_message

Ответы [ 3 ]

1 голос
/ 26 июня 2019

Попробуйте это?

val obj = JSONObject("ur Json string")
val error1 = obj.getJSONObject("errors").getString("error_one")
1 голос
/ 26 июня 2019
//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")

редактирование: так как вам нужен первый элемент базового объекта, вам нужно будет перебирать ключи, чтобы получить 1-й ключ. В Java это будет:

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

Я предполагаю, что в Котлине это будет:

val keyForFirstJsonbject = errorObject.keys.elementAt(0)

затем закончите с:

//get the string
val location = errorObject.getString(keyForFirstJsonbject)
1 голос
/ 26 июня 2019

думаю, так будет работать

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

но лучше использовать конвертируемую библиотеку, например Gson, здесь: GitHub Link

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...