php - Android:从 JSON 获取数据

标签 php android mysql json

我正在尝试将数据从 MySQL 数据库获取到我的 Android 应用程序。我可以获得一个String,但如果我想要更多而不只是一个数据,那就不太舒服了......

我读到了类似 JSON 的内容,并尝试了一些示例代码,但我总是收到类似的错误消息

"08-26 17:44:30.914: E/log_tag(9780): Error parsing data org.json.JSONException: No value for table1"

"08-26 17:45:52.403: E/log_tag(11220): Error parsing data org.json.JSONException: Value {"Role":"adminstrator","1":"0","age":"0","0":"adminstrator"} of type org.json.JSONObject cannot be converted to JSONArray"

那么我做错了什么?

PHP 脚本:

<?php
$con=mysqli_connect(****);
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysqli_query($con,"SELECT Role, age FROM table1 where 
Username='$username' and Password='$password'");
$row = mysqli_fetch_array($result);
print json_encode($row);
mysqli_close($con);
?>

Android 代码 fragment

        String result = sb.toString();

      //parse json data
        try{
            //JSONObject object = new JSONObject(result);
            //JSONArray jArray = object.getJSONArray("table1");
                JSONArray jArray = new JSONArray(result);
                for(int i=0;i<jArray.length();i++){
                        JSONObject json_data = jArray.getJSONObject(i);
                        Log.i("log_tag","age: "+json_data.getInt("age")+
                                ", role: "+json_data.getString("Role")
                        );
                }
        }
        catch(JSONException e){
                Log.e("log_tag", "Error parsing data "+e.toString());
        }

结果内容:{"0":"adminstrator","Role":"adminstrator","1":"0","age":"0"}

感谢您的帮助!

最佳答案

您有一个 JSONOBject 而不是数组

try{
    JSONObject json_data = new JSONObject(result);
    Log.i("log_tag","age: " + json_data.getString("age") +
                  ", role: "+json_data.getString("Role"));
}
catch(JSONException e){
        Log.e("log_tag", "Error parsing data "+e.toString());
}

不要使用 getInt,因为所有值都有引号,请改用 getString

<小时/>

对于所有用户:

PHP

$result = mysqli_query($con,"SELECT Role, age FROM table1 ");
$json = array();
while($row = mysqli_fetch_array($result)){
    $json[] = $row;
}
mysqli_close($con);
print json_encode($json);

JAVA

try{
    JSONArray jArray = new JSONArray(result);
    for(int i=0;i<jArray.length();i++){
       JSONObject json_data = jArray.getJSONObject(i);
       Log.i("log_tag","age: " + json_data.getString("age") +
                      ", role: "+json_data.getString("Role"));
    }
}
catch(JSONException e){
        Log.e("log_tag", "Error parsing data "+e.toString());
}

关于php - Android:从 JSON 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25510282/

相关文章:

php - 如何在功能测试中模拟 Symfony 2 服务?

php - 在php中找不到错误

android - 如何在 Android 中创建带有边和顶点的图

android - ListView 中的 textview.setText() 导致强制关闭

mysql - sql,获取聚合列表而不是循环

php - MYSQL DATE range 日期格式查询

php - 如何从 PHP 使用 linux 的 AT 命令?

php - 是否有适用于 PHP 的松散、宽松的 XML 解析器?

android - PageView 中的 RecyclerView 未显示列表

java - 向 TextView 和低速应用程序插入 49.000 个字符