我使用Volley库来获取JSON。我无法使用在Android 2.3上运行的模拟器加载JSON,其他版本的一切都很好。我不知道为什么它不能获得JSON,特别是在2.3设备上。
private void makeJsonObjectRequest() {
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
showpDialog();
final JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
urlJsonObj, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
extractJSONArray(response.getJSONArray("Accommodation"), "accommodation");
} catch (JSONException e) {
e.printStackTrace();
}
adapter.notifyDataSetChanged();
hidepDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Error: ", error.getCause().toString());
error.printStackTrace();
hidepDialog();
}
});
AppController.getInstance().addToRequestQueue(jsonObjReq);
}
答案 0 :(得分:1)
好的,首先使用Gson库,它会让你的生活更轻松:
然后为你的回答制作POJO,例如
public class Accommodation {
public String id;
public String icon;
public String name;
public String nameEn;
public String type;
public String fotoLinks;
public String address;
public String workHours;
public String description;
public String descriptionEn;
public String votes;
public String voters;
public String number;
public String email;
public String latitude;
public String longitude;
}
现在组合所有pojo类以匹配您的服务器响应:
public class ServerResponse {
public List<Accommodation> Accommodation;
public List<CashMachines> Cash_machines; // assuming you have CashMachines as well like above
}
现在建立一个请求:
Request<ServerResponse> request = new GsonRequest<ServerResponse>(Request.Method.GET,
url,AnalyticsData.class, new Response.Listener<ServerResponse>() {
@Override
public void onResponse(ServerResponse response) {
// user response here
Log.d(">>", response.Accommodation.size()+"");
}, errorListener);
现在使用此request
。
这是GsonRequest
。确保从here下载gson jar文件。
请注意,现有代码将立即开始使用此URL http://njreteazza.lt.ricina.serveriai.lt/info.php,即您甚至不需要为所有返回的类型创建pojo类,只需在需要时添加pojo类。