[更新]如何从 json 对象访问值?

加州阿努沙

我对 android 和 JSON 完全陌生。请帮我找到这个问题的解决方案——下面是我的 php 代码。

    <?php 
require "conn.php";
header('Content-Type: application/json');
if(isset($_POST['mailid']))
{
    $mailid = $_POST['mailid'];
    $today="2017-05-05";//date('Y-m-d');
    $mysql_qry = "select employee_id from employee where employee_email='$mailid';";
    $result = mysqli_query($conn ,$mysql_qry);
    $row = mysqli_fetch_array($result);

    $emp_id=$row['employee_id'];
    if($emp_id)
    {
        $sql = "SELECT count(*) from task where employee_id='$emp_id' and task_date='$today';";
        $result1 = mysqli_query($conn ,$sql);
        $row2=mysqli_fetch_array($result1, MYSQL_ASSOC);

        if($result1) 
        {
            $taskcount['count']= $row2['count(*)'];
            $taskquery = "select task_name from task where employee_id='$emp_id' and task_date='$today';";
            $restask_name=mysqli_query($conn ,$taskquery);

            for($i=0;$row1=mysqli_fetch_array($restask_name);$i++)
            {
                $task_name[]= $row1[0];
            }
            $taskname['tasks']=$task_name;
            $array=array_merge($taskcount,$taskname);
            echo json_encode($array);
        }
        else 
        {
        echo json_encode($taskcount);
        }
    }
    else
    {
        echo "employee ID doesnt match!!";
    }
}
else
{
    echo "post variables are not set";
}
?>

我收到来自服务器的响应,如下所示 -

{
 "count": "4",
 "tasks": [
        "collect paper",
        "krishna",
        "mys",
        "bng"   ] 
}

我解析json对象的代码如下——

if (!result.equals("employee ID doesnt match!!") || !result.equals("post variables are not set")) {
                    JSONObject json = new JSONObject(result);

                    MAX_ROWS = Integer.parseInt(json.getString("count"));
                    System.out.println("rows:"+MAX_ROWS);
                    JSONArray tasks = json.getJSONArray("tasks");
                    for (int task_id = 0; task_id < MAX_ROWS; task_id++) {
                        taskname[task_id] = tasks.getString(task_id);//**LINE 153**
                        System.out.println(taskname[task_id]);
                    }

                }

现在我得到一个空指针异常,这是我的堆栈跟踪——

05-05 17:41:33.255 22823-23024/com.example.anusha.fieldworkemployeetracker W/System.err:java.lang.NullPointerException
05-05 17:41:33.396 22823-23024/com.example.anusha.fieldworkemployeetracker W/System.err:     at com.example.anusha.fieldworkemployeetracker.ViewtaskActivity$BackgroundWorker.doInBackground(ViewtaskActivity.java:153)
05-05 17:41:33.396 22823-23024/com.example.anusha.fieldworkemployeetracker W/System.err:     at com.example.anusha.fieldworkemployeetracker.ViewtaskActivity$BackgroundWorker.doInBackground(ViewtaskActivity.java:107)
05-05 17:41:33.396 22823-23024/com.example.anusha.fieldworkemployeetracker W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-05 17:41:33.396 22823-23024/com.example.anusha.fieldworkemployeetracker W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-05 17:41:33.396 22823-23024/com.example.anusha.fieldworkemployeetracker W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-05 17:41:33.396 22823-23024/com.example.anusha.fieldworkemployeetracker W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-05 17:41:33.396 22823-23024/com.example.anusha.fieldworkemployeetracker W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-05 17:41:33.396 22823-23024/com.example.anusha.fieldworkemployeetracker W/System.err:     at java.lang.Thread.run(Thread.java:841)

我怎样才能做到这一点?提前致谢。

普里扬卡·坎特

试试这个;

if (!result.equals("employee ID doesnt match!!") || !result.equals("post variables are not set")) {
                JSONObject json = new JSONObject(result);

              int  MAX_ROWS = Integer.parseInt(json.getString("count"));
                System.out.println("rows:"+MAX_ROWS);
                String taskname[] = new String[MAX_ROWS];
                JSONArray tasks = json.getJSONArray("tasks");
                for (int task_id = 0; task_id < MAX_ROWS; task_id++) {
                    taskname[task_id] = tasks.getString(task_id);
                    System.out.println(tasks.getString(task_id));
                }

            }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章