Я получил его с помощью следующего кода:
if (!response.isEmpty()) {
Gson gson = new Gson();
try {
JSONArray mainArray = new JSONArray(response);
for (int i = 0; i < mainArray.length(); i++) {
JSONObject countryObj = mainArray.getJSONObject(i);
JSONArray languageArray = countryObj.getJSONArray("languages");
List<LanguageModel> languageModels = gson.fromJson(languageArray.toString(), new TypeToken<List<LanguageModel>>() {
}.getType());
// add it to adapter
for (LanguageModel languageModel : languageModels) {
//mAdapter.addItem(country);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
// array of country
}
Дайте мне знать, если вы все еще получаете ошибку.
Редактировать:
а как получить название страны и язык одновременно?
Вы должны отредактировать CountryModel
следующим образом:
public class CountryModel {
@SerializedName("name")
String countryName;
@SerializedName("languages")
ArrayList<LanguageModel> languages;
public CountryModel() {
}
}
и LanguageModel
следующим образом:
class LanguageModel {
@SerializedName("iso639_1")
String iso1;
@SerializedName("iso639_2")
String iso2;
@SerializedName("name")
String name;
@SerializedName("nativeName")
String nativeName;
public LanguageModel() {
}
}
Теперь последнее изменение в разборе:
if (!response.isEmpty()) {
Gson gson = new Gson();
try {
JSONArray mainArray = new JSONArray(response);
List<CountryModel> countryList = gson.fromJson(mainArray.toString(), new TypeToken<List<CountryModel>>() {
}.getType());
//do something with your country list
Log.d("R-Countries", countryList.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
Пока этот ответ работает, вы должны увидеть следующую ссылку, чтобы понять, что я здесь сделал.
http://www.studytrails.com/java/json/java-google-json-introduction/