我的周期有一个问题。 我用JsonParser解析数据,在我使用一个周期打印所有数据后,我只收到最后一个结果。
这是代码:
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.d("id_Persons", "id: " + json_data.getString("id_Persons")
+ ", nome: " + json_data.getString("name")
+ json_data.getString("address")
);
stringaFinale = json_data.getString("id_Persons") + " "
+ json_data.getString("name") + " "
+ json_data.getString("address");
}
return stringaFinale;
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
但是,
Log.d("id_Persons", "id: " + json_data.getString("id_Persons")
+ ", nome: " + json_data.getString("name")
+ json_data.getString("address")
);
我不明白错误是什么。 This is the screen of app
答案 0 :(得分:1)
您在for
循环的每次迭代中都会覆盖它的值。
更改
stringaFinale = json_data.getString("id_Persons") + " " + json_data.getString("name") + " " + json_data.getString("address");
到
stringaFinale += json_data.getString("id_Persons") + " " + json_data.getString("name") + " " + json_data.getString("address");
注意:您应该使用空字符串初始化stringaFinale
String stringaFinale = "";
更新:另一种更好的方法是使用StringBuilder
这样的
// declare it before the loop
StringBuilder stringaFinale = new StringBuilder(200); // use appropriate size
//Inside the loop
stringaFinale.append(json_data.getString("id_Persons") + " " + json_data.getString("name") + " " + json_data.getString("address"));
//Get the value
stringFinale.toString();