javaandroid中的json数组/对象迭代
大家好[Java和Android新手] 我有一个php脚本,它给出了如下的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
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。。。。。因此,使用这些名称获取数据非常重要。一种更方便的方法是修改服务器以提供适当的响应。