如何从android json数组中获取Json值?
问题描述:
我需要从JSON数组我的国家的名字,但是当我试图代码的不显示任何.. 这是JSON输出如何从android json数组中获取Json值?
{
"status_code": 200,
"status": "OK",
"status_message": "Success",
"country_details": [
{
"country_code": "AF",
"country_name": "Afghanistan",
"country_iso": "AFG",
"country_flag": "http://..../img/countryflags/128x128/af.png",
"calling_code": "93",
"fancier_count": 2
},
在这里,我只想country_name
但是当我试图此代码..它没有显示我什么.. 这里是我的代码:
protected Void doInBackground(Void... params) {
String result = "";
try {
list.add("Select Country");
Thread.sleep(2000);
String data = (URLEncoder.encode("dest", "UTF-8") + "=" + URLEncoder.encode("destination", "UTF-8"));
URLConnection conn = new URL("http://.../api/getCountries").openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = rd.readLine();
if (line == null) {
wr.close();
rd.close();
//return Boolean.valueOf(true);
} else {
result += line;
}
} catch (Exception e2) {
e2.printStackTrace();
}
//parse json data
try {
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject jsonObject = jArray.getJSONObject(i);
// add interviewee name to arraylist
list.add(jsonObject.getString("country_name"));
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(PMRegisterActivity.this, "Please wait...", "Fetching data", true, false);
list = new ArrayList<>();
}
我知道我缺少这个东西......但没有得到什么呢?
答
变化JSON解析如下
try {
JSONObject jObj = new JSONObject(result);
JSONArray jArray = jObj.getJSONArray("country_details");
for (int i = 0; i < jArray.length(); i++) {
JSONObject jsonObject = jArray.getJSONObject(i);
// add interviewee name to arraylist
list.add(jsonObject.getString("country_name"));
}
} catch (JSONException e) {
e.printStackTrace();
}
答
//解析JSON数据
try {
JSONObject resultJsonObject=new JSONObject(result);
JSONArray country_detailsJsonArray=resultJsonObject.getJSONArray("country_details");
for (int i=0;i<country_detailsJsonArray.length();i++){
JSONObject countryONJ=country_detailsJsonArray.getJSONObject(i);
String country_name=countryONJ.getString("country_name");
Log.d("country_name","="+country_name);
}
} catch (JSONException e) {
e.printStackTrace();
}
答
尝试这样的事情。
try {
JSONObject jsonResponse = new JSONObject(result);
JSONArray jsArray= jsonResponse.getJSONArray("country_details");
for (int i = 0; i < jsArray.length(); i++)
{
JSONObject jsonObject = jsArray.getJSONObject(i);
list.add(jsonObject.getString("country_name"));
}
} catch (JSONException e) { }
答
我假设你result
变量将具有上述Json
变化解析JSON的一部分,这
try {
JSONObject obj = new JSONObject(result);
JSONArray jArray = obj.getJSONArray("country_details")
for (int i = 0; i < jArray.length(); i++) {
JSONObject jsonObject = jArray.getJSONObject(i);
// add interviewee name to arraylist
list.add(jsonObject.getString("country_name"));
}
} catch (JSONException e) {
e.printStackTrace();
}
+0
thx我已经gt的答案..但upvoted urs也 –
确定让我来试试.. –
确定THX其工作 –
@ z.al请接受回答它是否工作。 –