@Neonoviiwolf
Flutter developer

Как распарсить такой кусок Json?

Доброго, не могу понять как правильно распарсить этот кусок
[
  {
    "id": 14256,
    "coord": {
      "lon": 48.570728,
      "lat": 34.790878
    },
    "country": "IR",
    "geoname": {
      "cl": "P",
      "code": "PPL",
      "parent": 132142
    },
    "langs": [
      {
        "de": "Azad Shahr"
      },
      {
        "fa": "آزادشهر"
      }
    ],
    "name": "Azadshahr",
    "stat": {
      "level": 1.0,
      "population": 514102
    },
    "stations": [
      {
        "id": 7030,
        "dist": 9,
        "kf": 1
      }
    ],
    "zoom": 10
  },
  {
    "id": 18918,
    "coord": {
      "lon": 34.058331,
      "lat": 35.012501
    },
    "country": "CY",
    "geoname": {
      "cl": "P",
      "code": "PPL",
      "parent": 146615
    },
    "langs": [
      {
        "en": "Protaras"
      },
      {
        "ru": "Протарас"
      }
    ],
    "name": "Protaras",
    "stat": {
      "level": 1.0,
      "population": 20230
    },
    "stations": [
      {
        "id": 5448,
        "dist": 42,
        "kf": 1
      }
    ],
    "zoom": 6
  }
]


Кусок с массивом "langs" - мне нужно получить данные ток en и ru, если есть. Но в каждом "langs" неизвестное количество.
Вот что есть:
public ParserJson(CallbackParserData callback) {
        MainApp.app().appComponent().inject(this);
        String strJson;
        AssetManager assetManager = context.getAssets();
        try {
            InputStream stream = assetManager.open("city.json");
            int size = stream.available();
            byte[] buffer = new byte[size];
            stream.read(buffer);
            stream.close();
            strJson = new String(buffer, "UTF-8");

            JsonParser parser = new JsonParser();

            Object obj = parser.parse(strJson);
            JsonArray jsonArray = (JsonArray) obj;
            List<ParserWeather> weatherList = new ArrayList<>();

            for (int i = 0; jsonArray.size() > i; ++i)
                weatherList.add(new Gson().fromJson(jsonArray.get(i), ParserWeather.class));
            callback.returnListTempWeather(weatherList);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Общий
@Getter
@Setter
public class ParserWeather {
    @SerializedName("id")
    private long id;

    @SerializedName("name")
    private String nameCity;

    @SerializedName("country")
    private String country;

    @SerializedName("langs")
    private List<ParserLangs> langs;
}

а вот тут я не знаю что написать
@Getter
@Setter
public class ParserLangs {
    @SerializedName("ru")
    private LangsRU langsRU;
    @SerializedName("en")
    private LangsEN langsEN;
}
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Странная структура. Парсь в List<Map<String, String>>, a если есть возможность поменять структуру, меняй.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы