[英]Unable to fetch data from Json volley
我无法从这种类型的JSON中获取数据,我对如何从JsonObject内部获取数据感到困惑,我得到了“ dealer_name”,“ phone_no”和“ address”的值,但我没有得到该值另一个。
这是我的解决方案。
JsonObjectRequest jsonObjReq = new JsonObjectRequest(
urlLink, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("suraj", response.toString());
try {
for (int i = 0; i < response.length(); i++) {
String name = response.getString("dealer_name");
String phone_no = response.getString("phone_no");
String add = response.getString("address");
JSONObject phone = (JSONObject) response.get(String.valueOf(i));
String acc_name = phone.getString("auto_dealer_id");
String acc_price = phone.getString("accessory_price");
jsonResponse = "";
jsonResponse += "dealer_name: " + name + "\n\n";
jsonResponse += "dealer_phone: " + phone_no + "\n\n";
jsonResponse += "dealer_add: " + add + "\n\n";
jsonResponse += "acc_name: " + acc_name + "\n\n";
jsonResponse += "acc_price: " + acc_price + "\n\n";
}
txt.setText(jsonResponse);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
Volley.newRequestQueue(Activity3.this).add(jsonObjReq);
}
这是我的JSON数据:
{ "auto_dealer_id": "1", "dealer_name": "RAJ MOTORS", "phone_no": "9004296356", "address": "THANE WEST 40002", "0": { "auto_dealer_accessory_id": "1", "auto_dealer_id": "1", "accessory_name": "CAR OILING", "accessory_price": "40" }, "1": { "auto_dealer_accessory_id": "2", "auto_dealer_id": "1", "accessory_name": "CAR WASHING", "accessory_price": "40" }, "2": { "auto_dealer_gallery_id": "1", "auto_dealer_id": "1", "image": "1.jog", "status": "1", "sort": "1", "added_date": "0000-00-00 00:00:00" } }
试试这个代码:
try
{
String jsonString="";//your json string here
JSONObject jObject= new JSONObject(jsonString);
Iterator<String> keys = jObject.keys();
while( keys.hasNext() )
{
String key = keys.next();
Log.v("key Items", key);
JSONObject innerJObject = jObject.getJSONObject(key);
Iterator<String> innerKeys = innerJObject.keys();
while( innerKeys.hasNext() )
{
String innerKkey = keys.next();
String value = innerJObject.getString(innerKkey);
Log.v("key = "+key, "value = "+value);
}
}
}
catch (JSONException e){
e.printStackTrace();
}
但是最好将JsonObject
“ 1”,“ 2” ...转换为JsonArray
由于您想在json对象中获取json对象,因此您可以在此处获取
JSONObject number = response.getJSONObject("1");
number.getString("auto_dealer_accessory_id")
等等。 但是也有一些更好的方法。 使用Gson并改善来自服务器的数据结构。 使用数组是更好的选择,不要忘记在尝试获取值之前检查对象或字符串是否存在。 您可以使用jsonObject.has("key")
尝试这个:
ArrayList acc_name = new ArrayList(); ……
try
{
JSONObject obj=new JSONObject(responseString);
String name = obj.getString("dealer_name");
String phone_no = obj.getString("phone_no");
String add = obj.getString("address");
Iterator<String> keys = obj.keys();
while( keys.hasNext() )
{
String key = keys.next();
JSONObject innerJObject = obj.getJSONObject(key);
Iterator<String> inKeys= innerJObject .keys();
while( inKeys.hasNext() )
{
String inKeys= keys.next();
acc_name.Add(innerJObject .getString(inKeys);
..
}
}
}
catch (JSONException e)
{ e.printStackTrace(); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.