无法从Json凌空中获取数据

时间:2017-01-23 07:38:42

标签: android json android-volley

我无法从这种类型的JSON中获取,我对如何从JsonObject内部获取数据感到困惑,我得到了“dealer_name”,“phone_no”和“address”的值,但我不是获得他人的价值。

这是我的解决方案。

type

这是我的JSON数据: -

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); }

3 个答案:

答案 0 :(得分:1)

试试这段代码:

 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

答案 1 :(得分:0)

因为你想在json对象中获取json对象, 在这里你可以得到

JSONObject number = response.getJSONObject("1");
number.getString("auto_dealer_accessory_id") 

等等。 但也有一些更好的方法。使用Gson并改善来自服务器的数据结构。使用数组是更好的选择,在尝试获取值之前不要忘记检查对象或字符串是否存在。您可以使用  jsonObject.has("key")

答案 2 :(得分:0)

试试这个:

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();    }