Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javaandroid中的json数组/对象迭代_Java_Android_Arrays_Json - Fatal编程技术网

javaandroid中的json数组/对象迭代

javaandroid中的json数组/对象迭代,java,android,arrays,json,Java,Android,Arrays,Json,大家好[Java和Android新手] 我有一个php脚本,它给出了如下的json响应 echo json_encode(array($camparray)); [ { "0":{"url":"10007.jpg","cmpname":"Romain Jerome"}, "2":{"url":"10023.jpg","cmpname":"NGO"}, "3":{"url":"10024.jpg","cmpname":"Save The C

大家好[Java和Android新手]

我有一个php脚本,它给出了如下的json响应

echo json_encode(array($camparray));
[
    {
        "0":{"url":"10007.jpg","cmpname":"Romain Jerome"},
        "2":{"url":"10023.jpg","cmpname":"NGO"},
        "3":{"url":"10024.jpg","cmpname":"Save The Children"},
        "4":{"url":"10039.jpg","cmpname":"John Deere"},
        "5":{"url":"10039.jpg","cmpname":"Starbucks"}
    }
]
json数组如下所示

echo json_encode(array($camparray));
[
    {
        "0":{"url":"10007.jpg","cmpname":"Romain Jerome"},
        "2":{"url":"10023.jpg","cmpname":"NGO"},
        "3":{"url":"10024.jpg","cmpname":"Save The Children"},
        "4":{"url":"10039.jpg","cmpname":"John Deere"},
        "5":{"url":"10039.jpg","cmpname":"Starbucks"}
    }
]
现在我用截击来得到回应。不知何故,我根本无法迭代数组。请帮忙

@Override
public void onResponse(JSONObject response) {
    Toast.makeText(getApplicationContext(),"On Response Try block",Toast.LENGTH_SHORT).show();
    try {
        JSONArray camps = response.getJSONArray("camparray");
        // insert for loop here...
        //String pinusers = response.getString("mobileno");
        //Toast.makeText(getApplicationContext(),"On Response Try block"+pinusers,Toast.LENGTH_SHORT).show();

        if(camps!= null){
            JSONObject jsonObj = new JSONObject("camps");
            JSONArray cmpz = jsonObj.getJSONArray("camparray");
            for (int i = 0; i < cmpz.length(); i++) {
                JSONObject c = cmpz.getJSONObject(i);

                String id = c.getString("url");
                String name = c.getString("cmpname");
                Toast.makeText(getApplicationContext(),"On Response Try bitch"+id+name,Toast.LENGTH_SHORT).show();
            }
        }
        else {
            Toast.makeText(getApplicationContext(),"Camp NULL",Toast.LENGTH_SHORT).show();
        }
    }
    catch (JSONException e) {
        e.printStackTrace();
        Toast.makeText(getApplicationContext(),"Try Fail NULL",Toast.LENGTH_SHORT).show();
    }
}
@覆盖
公共void onResponse(JSONObject响应){
Toast.makeText(getApplicationContext(),“响应时尝试块”,Toast.LENGTH_SHORT.show();
试一试{
JSONArray camps=response.getJSONArray(“camparray”);
//在此处插入for循环。。。
//String pinusers=response.getString(“mobileno”);
//Toast.makeText(getApplicationContext(),“响应时尝试块”+pinusers,Toast.LENGTH_SHORT).show();
if(camps!=null){
JSONObject jsonObj=新的JSONObject(“营地”);
JSONArray cmpz=jsonObj.getJSONArray(“camparray”);
对于(int i=0;i

我不明白为什么已经过去了几个小时,我无法破解它。我猜是一些概念问题…

首先,服务器的响应是错误的结构化格式。不过,要获取此响应的内容,您可以使用以下命令:

  if(camps!= null){
        JSONArray cmpz = new JSONArray("camparray");
        JSONObject jsonObj = cmpz.getJSONObject(0);

        String zero = jsonObj.getString("0");
        JSONObject vZero = new JSONObject(zero);
        String zeroUrl = vZero.getString("url");
        String cmpnameZero = vZero.getString("cmpname");

        String two = jsonObj.getString("2");
        JSONObject vTwo = new JSONObject(two);
        String twoUrl = vTwo.getString("url");
        String cmpnameTwo = vTwo.getString("cmpname");



        String three = jsonObj.getString("3");
        JSONObject vThree = new JSONObject(three);
        String threeUrl = vThree.getString("url");
        String cmpnamTthree = vThree.getString("cmpname");

        //Similarly get value for 4 and 5 and do whatever you want with those variables
    }

Hi@Basu Singh我的json值不是固定的…现在有2个下一次迭代,可能是20。请提供您从服务器收到的全部响应。Basu Hi现在就是今天的响应。Tommorow将是[{“0”:{“url”:“10007.jpg”,“cmpname”:“Romain Jerome”},“2”:{“url”:“10023.jpg”,“cmpname”:“NGO”},“3”:{“url”:“10024.jpg”,“cmpname”:“拯救孩子”},“4”:{“url”:“10039.jpg”,“cmpname”:“约翰·迪尔”},“5”:{“url”:“10039.jpg”,“cmpname”:“星巴克”}“6”:“url”:“10039.jpg”,“cmpname”:“星巴克”}“7”:{“url”:“10039.jpg”,“cmpname”:“Starbucks”}]我需要获取数组。首先,这些是Json对象。可以使用length()表示长度。现在,服务器提供的是JSON对象,其结构为name:value。因此,要获得值,必须知道名称。这里的名称是0、2、3、4。。。。。因此,使用这些名称获取数据非常重要。一种更方便的方法是修改服务器以提供适当的响应。