Как это JSON парсинг Android бесконечные данные - PullRequest
0 голосов
/ 30 октября 2018

API, который я использую, обеспечивает вывод в формате JSON. Как я могу разобрать это на Android Studio? Я никогда раньше не видел распечатки в формате JSON.

{
"market":   {
        "100": {
        "name": "forexample",
        "surname": "forexample2"
},
         "101": {
        "name": "forexample3",
        "surname": "forexample4"
},

.
.
.

 "999": {
        "name": "forexampleXX",
        "surname": "forexampleXX"
}
}
}

«101» продолжает увеличиваться на 1. Это будет слишком долго для индивидуальной идентификации. Какой самый короткий путь?

Ответы [ 4 ]

0 голосов
/ 30 октября 2018

Вы можете использовать библиотеку GSON, это очень известная библиотека добавь это так

implementation 'com.google.code.gson:gson:2.8.2'

тогда вы можете разобрать это так

Market market = new Gson().fromJson( jsonString , Market.class);

, где Market Class будет

public class Market {
     public HashMap<Integer ,  User > result ;
}

И

public class User{ 
    public String name ;
    public String surname ;
}

Или вы можете разобрать его без такого класса

HashMap<String,HashMap<String, User>>  result = gson.fromJson( jsonString , new TypeToken<HashMap<String,HashMap<String, User>>>() {
                        }.getType());

Надеюсь, это поможет тебе @ Билл.

0 голосов
/ 30 октября 2018

Ваш "рыночный" JSON должен быть JSONArray . Показать, что вы можете использовать контент с индексом.

Измените выход API. Как,

{
"market":   [
         {
        "name": "forexample",
        "surname": "forexample2"
         },

         {
        "name": "forexample3",
        "surname": "forexample4"
         },

.
.
.

    {
        "name": "forexampleXX",
        "surname": "forexampleXX"
    }
 ]
}
0 голосов
/ 30 октября 2018

Вы можете использовать https://github.com/google/gson. И преобразовать JSON во что-то вроде

HashMap<String,HashMap<String,Person>> map

Эта статья может помочь при анализе этого типа - Десериализация общих типов с помощью GSON

Человек будет классом с именем и фамилией. Сначала получите ключи первого уровня. -> map.keySet (), и для каждого нового hashmap получить ключ следующего уровня. Что-то вроде

for (String key: map.keySet()) {
 HashMap < String, Person > personMap = map.get(key);
 for (String personKey: personMap() {
   Person person = map.get(personKey);
   // do what you want with the person object
  }
 }
0 голосов
/ 30 октября 2018

Так вы получаете данные от нужного вам объекта

    JSONObject json= new JSONObject();
    json = response.getJSONObject("market");
    Iterator<String> iter = json.keys();//here you get 100,101,102 ....without accessing individually
    while (iter.hasNext()) {
    String key = iter.next();
    try {
        Object value = json.get(key);//Here you get you object values
    } catch (JSONException e) {
        // Something went wrong!
    }
    }

Подробности читайте здесь

Не стесняйтесь спрашивать, если что-то не ясно.

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