【发布时间】:2017-05-05 10:41:54
【问题描述】:
我对 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]);
}
}
现在我得到一个空指针异常,这是我的 Stacktrace--
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)
我该怎么做?提前致谢。
【问题讨论】:
-
把你的实际 json 响应放在这里
-
您对此有任何错误吗?
-
@BhupatBheda {"count":["4"],"tasks0":["collect paper"],"tasks1":["krishna"],"tasks2":["mys" ],"tasks3":["bng"]} 我的 JSON 响应
-
"tasks[0]"... 是 json 数组而不是对象。
-
@SachinGupta 我的 php 代码运行良好。我什至得到了一个有效的响应。我只需要在 android 中解析我的 json 对象。