Как распарсить Json, пришедший от response

195
11 мая 2019, 14:00

Делаю String jsonStr = response.json(), чтобы получить данные с ApiVk В итоге я получаю

String jsonStr = "{\"response\":{\"count\":254,\"items\":[{\"last_name\":\"Екимов\",\"id\":325813465,\"first_name\":\"Артём\"},{\"last_name\":\"Виноградов\",\"id\":448209461,\"first_name\":\"Дэнчик\"},{\"last_name\":\"Κонстантинов\",\"id\":444441827,\"first_name\":\"Κонстантин\"}]}}";

Как мне распарсить строчку, чтобы получить массив значений id

JSONObject jsonObj = new JSONObject(jsonStr);
name = jsonObj.getString("id");выдает исключение
first = jsonObj.getJSONObject("items").getString("id");

выдает исключение nullpointer

Answer 1

Тебе надо разобраться со структурой. Советую сайт https://jsoneditoronline.org

{
  "response": {
    "count": 254,
    "items": [
      {
        "last_name": "Екимов",
        "id": 325813465,
        "first_name": "Артём"
      },
      {
        "last_name": "Виноградов",
        "id": 448209461,
        "first_name": "Дэнчик"
      },
      {
        "last_name": "Κонстантинов",
        "id": 444441827,
        "first_name": "Κонстантин"
      }
    ]
  }
}

Из этого видно, что для начала надо обратиться к корневому элементу response, потом к массиву items. В итоге нужно как то так

name = jsonObj.getJSONObject("response").getJSONArray("items")[0].getString("id")
Answer 2

regex'ом можно
вот, смотри: regex101.com
вот сам regex (без экранирования): {\s+"last_name":\s+"?([^"]+)"?,\s+"id":\s+(\d+),\s+"first_name":\s+"?([^"]+)"?\s+}
выполняешь метод парсинга, в результате получишь класс с совпадениями
last_name - [1]
id - [2]
first_name - [3]

READ ALSO
Различие в результатах работы javac и Eclipse Compiler for Java

Различие в результатах работы javac и Eclipse Compiler for Java

Столкнулся с интересным различием поведения компиляторов javac и Eclipse Compiler for Java помогите разобраться почему их поведение отличается и какое...

200
Как можно изменять имя checkBox?

Как можно изменять имя checkBox?

Есть CheckBox, с id Checkbox1 и текстом NameCheckBox (это все вxml)

235
К вопросу о конструкторах в языке программирования Java [закрыт]

К вопросу о конструкторах в языке программирования Java [закрыт]

Возник достаточно интересный вопрос, на который я пока не смог найти ответ, но уверен, что здесь мне помогут

205
WebDriver не находит нужный элемент

WebDriver не находит нужный элемент

Получаю http://seleniumhqorg/exceptions/no_such_element

185