繁体   English   中英

为什么我得到空的 JSON 响应?

[英]Why I am getting null JSON response?

我正在从JSON获取数据到 android.But,我得到一个空的JSON响应。 生成JSON数据的PHP代码如下:

$result = $conn->query("SELECT dbname FROM users ORDER BY dbname ASC");
//defined second array for dbnames' list
$dblist = array();
while($row = $result->fetch_assoc()){
    //array_push($response['dblist'],$row['dbname']);
    $dblist[] = array('name'=>$row['dbname']);
}
$response['dblist'] = $dblist;

这是JSON响应。

{"dblist":[{"name":"a"},{"name":"arsod"}]}

android获取数据的Java代码如下:

JSONObject obj = new JSONObject(s);
JSONArray names = obj.getJSONArray("dblist");

for(int i=0; i < names.length(); i++) {
    JSONObject n = names.getJSONObject(i);
    String name = n.getString("name");
    Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show();
    institutes.add(name);
}

其中institutes是一个ArrayList ,我想在其中添加每个获取的元素。 但是在获取数据时,我在 logcat org.json.JSONException: End of input at character 0 of . 出了什么问题?

删除这一行:

JSONObject object = obj.getJSONObject("dblist");

并替换所有出现的object. obj.

您的JSONObject obj不包含"dblist"对象,其中只有数组,因此您应该直接在obj查找getJSONArray("dblist")

编辑:您正在解析不同的String s ,我刚刚检查了此代码:

final String s = "{\"dblist\":[{\"name\":\"a\"},{\"name\":\"arsod\"}]}";
JSONObject obj = new JSONObject(s);
JSONArray names = obj.getJSONArray("dblist");

for (int i = 0; i < names.length(); i++) {
    JSONObject n = names.getJSONObject(i);
    String name = n.getString("name");
    Toast.makeText(this, name, Toast.LENGTH_SHORT).show();
}

这几乎和你的完全一样,而且工作得很好......

考虑到以下几点:

s = {"dblist":[{"name":"a"},{"name":"arsod"}]}

你的代码应该是这样的

JSONObject obj = new JSONObject(s);
JSONArray names = obj.getJSONArray("dblist");

for(int i=0; i < names.length(); i++) {
    JSONObject n = names.getJSONObject(i);
    String name = n.getString("name");
    Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show();
    institutes.add(name);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM