如何将 JSON 数组从 url 转换为 java 数组以显示不同的国家/地区名称?



在这里,我在 text2 中使用了 https://restcountries.eu/rest/v2/lang/es,并且只能显示 Jason 数组中的一个国家"阿根廷"。但是,我想显示不同的国家/地区名称。

try {
JSONObject jo = new JSONObject(text2);
String []fields = { "name","callingCodes","capital","region","population"};
for (int i=0 ;i < fields.length; i++) {
tv.append(fields[i] + " = " + jo.getString(fields[i]) + "n");
if (fields[i].equalsIgnoreCase("flag")) {
Picasso.with(c)
.load("https://media1.britannica.com/eb-media/54/69554-004-3E298C44.jpg")
.placeholder(R.drawable.ic_android_temp)
.error(R.drawable.ic_error)
.into(img);
}
}
} catch (Exception e) {
e.printStackTrace();
}

使用 text2 字符串作为 JSONArray 而不是 JSONObject 并遍历数组。像这样:

try {
JSONArray jArray = new JSONArray(text2);
String []fields = { "name","callingCodes","capital","region","population"};
for (int i=0;i<jArray.length();i++){
JSONObject obj = jArray.getJSONObject(i);
for (int i=0 ;i < fields.length; i++) {
tv.append(fields[i] + " = " + obj.getString(fields[i]) + "n");
if (fields[i].equalsIgnoreCase("flag")) {
Picasso.with(c)
.load("https://media1.britannica.com/eb-media/54/69554-004- 
3E298C44.jpg")
.placeholder(R.drawable.ic_android_temp)
.error(R.drawable.ic_error)
.into(img);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}

请尝试遍历在您的情况下是jo的JSON数组

JSONArray jsonArray=new JSONArray(text2);
if(jsonArray!=null && jsonArray.length()>0){
for (int i = 0; i < jsonArray.length(); i++) {
//Process Json Here
}
}

将其存储在JSONArray中。

循环你的JSONArray并得到JSONObject like

obj = array.getJSONObject(i);
name = obj.getString("name");

obj对象中获取名称。

你可以像这样做这项工作

JSONArray jsonArray = new JSONArray(jsonArrayString);
List<String> list = new ArrayList<String>();
for (int i=0; i<jsonArray.length(); i++) {
list.add( jsonArray.getString(i) );
}

这是您的示例 实现您的代码

List<String> allNames = new ArrayList<String>();
JSONArray itemArray=new JSONArray(jsonString);
for (int i=0; i<itemArray.length(); i++) {
JSONObject actor = itemArray.getJSONObject(i);
String name = actor.getString("name");
allNames.add(name);
}

最新更新