我试图从JSON Feed中读取注册号。
{"error":false,"0":[{"registration_number":"HJ-1756"},{"registration_number":"ABD-1234"}]}
但是我很难用以下代码来完成它。
JsonArrayRequest req = new JsonArrayRequest(Constants.URL_VEHICLE_REG_JSON,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
try {
// Parsing json array response
// loop through each json object
jsonResponse = "";
// get an array from the JSON object
JSONArray res = (JSONArray) response.get(1);
for (int i = 0; i < res.length(); i++) {
//JSONObject car = (JSONObject) response.get(i);
JSONObject innerObj = (JSONObject)res.get(i);
String registrationNumber = innerObj.getString("registration_number");
jsonResponse += "registration_number: " + registrationNumber + "\n\n";
Log.d(TAG, jsonResponse);
items.add(registrationNumber);
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
adapter.notifyDataSetChanged();
hideDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
Log.d(TAG, "Error: " + error.getMessage());
hideDialog();
}
});
我尝试将Listener更改为Listener和response。但它没有用。据我所知,我得到了JSONObject。但是我哪里出错了?
答案 0 :(得分:2)
首先,因为您的JSON响应是JSONObject
,所以您应该使用Volley的JsonObjectRequest
代替JsonArrayRequest
。
然后,让我们假设您成功获取JSONObject响应数据,您可以使用以下示例代码:
if (jsonObject != null && !jsonObject.isNull("0")) {
JSONArray jsonArray = jsonObject.getJSONArray("0");
if (jsonArray != null && jsonArray.length() > 0) {
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
if (jsonObj != null && !jsonObj.isNull("registration_number")){
String regNum = jsonObj.getString("registration_number");
}
}
}
}
希望它有所帮助!
答案 1 :(得分:0)
您尝试此代码
JSONArray jsonArray = jsonObject.getJSONArray("0");
if (jsonArray != null) {
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
String regNum = jsonObj.getString("registration_number");
}