【发布时间】:2017-11-17 19:57:29
【问题描述】:
我有一个从数据库返回对象列表的 php 文件。 这是php代码:
<?php
require_once('../connect.php');
$sql = "SELECT * FROM categories";
$result = $conn->query($sql);
$json = new SimpleXMLElement('<xml/>');
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$mydata = $json->addChild('category');
$mydata->addChild('id',$row['id']);
$mydata->addChild('name',$row['Name']);
}
} else {
echo "0 results";
}
$conn->close();
echo( json_encode ($json));
?>
结果如下:
{"category":[{"id":"1","name":"test"},{"id":"2","name":"test2"}]}
现在我想获取 android 中的类别列表,我尝试使用此代码执行此操作,但它总是返回空列表:
public List<Category> getAllCategories(){
StringRequest stringRequest = new StringRequest(Request.Method.GET,"http://localhost/Android/Categories/Select_All_Categories" ,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
Log.d("TAG","response :"+response);
JSONObject jsonObject = new JSONObject(response);
JSONArray sts = null;
sts = jsonObject.getJSONArray("category");
for (int i = 0; i < sts.length(); i++) {
JSONObject jo = sts.getJSONObject(i);
Category cc = new Category();
cc.setId(jo.getInt("id"));
cc.setName(jo.getString("name"));
ar.add(cc);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
return ar;
}
有人可以帮助我并告诉我我做错了什么吗?
diegoveloper 的更新:这是我在 main 中使用的代码。
MyListener listener = new MyListener() {
@Override
public void returnYourData(List<Category> list) {
for(Category c:list){
lc.add(c);
}
}
@Override
public void returnError() {
}
};
System.out.println(lc.size());
【问题讨论】:
标签: android json android-studio android-volley