繁体   English   中英

无法从Json Volley获取数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM