Получить данные из JSONArray - PullRequest
       3

Получить данные из JSONArray

0 голосов
/ 20 октября 2019

Я пытаюсь проанализировать данные из моего json с помощью следующего кода котлина:

val text = JSONObject(URL(request).readText())
val results = text.getJSONArray("results")
val name = results.getJSONObject(5).getString("name") // org.json.JSONException: Index 5 out of range [0..1) 

json

{
    summary: {
    queryType: "NEARBY",
    queryTime: 13,
    numResults: 2,
    offset: 0,
    totalResults: 2,
    fuzzyLevel: 1,
    geoBias: {
        lat: -37.736343,
        lon: 145.152114
        }
    },
    results: [
    {
    type: "POI",
    id: "AU/POI/p0/77255",
    score: -0.38554,
    dist: 385.5365152133808,
    info: "search:ta:0323405846509-AU",
    poi: {
        name: "La Gourmet",

Однако яполучаю следующую ошибку в моей 3-й строке:

org.json.JSONException: Index 5 out of range [0..1)

Я не уверен, почему я получаю эту ошибку. Я прибег к поиску name по индексу, потому что .getJSONObject("poi") не занимает String. Это также касается того, что данные могут измениться, поэтому я бы предпочел запросить JSON через String.

Есть идеи?

1 Ответ

2 голосов
/ 20 октября 2019

results - это массив, и ваш код пытается получить 5-й элемент массива. Вам нужно получить первый элемент, а затем вы можете получить poi по имени.

val text = JSONObject(URL(request).readText())
val results = text.getJSONArray("results")
val result0 = results.getJSONObject(0)
val poi = result0.getJSONObject("poi")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...