ОШИБКА неожиданного '}' при печати данных json в почтальоне - PullRequest
0 голосов
/ 24 мая 2018

Я написал некоторый код для службы мобильных приложений, мне нужно, чтобы вывод был в формате json, когда я тестировал на почтальоне, я получил такую ​​ошибку: Неожиданно '}' , но когда я печатаюэто в виде массива, он работает нормально, но в формате json у меня возникла проблема, я не понимаю, почему он показывает ошибку, он выглядит хорошо для меня, пожалуйста, проверьте код ниже.

спасиботы.

<?php
//$dbcon=mysqli_connect("localhost","root","","testing");
$username = $_REQUEST['username'];

if($username != '') {
    $sql= "select * from test j,testing_user u where j.employer_id=u.id order by `date_added` desc limit 10";
    $query= mysqli_query($dbcon,$sql);
    $records = array();
    $rows = array();

    if(mysqli_num_rows($query) > 0) {
        while($row = mysqli_fetch_object($query)) {
            $rows['job_id'] = $row->job_id;
            $rows['job_title'] = addslashes($row->job_title);
            $rows['username'] = $row->username;
            $rows['userid'] = $row->id;
            $rows['email'] = $row->email;

            $sql1 = mysqli_query($dbcon,"select * from test_company where company_id=".$row->company);
            $row1 = mysqli_fetch_object($sql1);
            $rows['companyname'] = $row1->name;
            $rows['reccruitername'] = $row1->contact_name;
            $rows['duration'] = $row->duration;
            $skills = trim(addslashes(strip_tags($row->skills_prefered))).PHP_EOL;
            $jobskills = utf8_encode($skills);
            $rows['job_skills'] = str_replace('&nbsp;',' ',$jobskills);
            $description = trim(addslashes(strip_tags($row->description))).PHP_EOL;
            $desc = utf8_encode($description);
            $rows['job_description'] = str_replace('&nbsp;',' ',$desc);
            $sql2 = mysqli_query($dbcon,"select * from test_cities where code='".(int)$row->city. "'");
            $crow = mysqli_fetch_object($sql2);
            $sql3 = mysqli_query($dbcon,"select * from test_states where code='".$row->state."'");
            $srow = mysqli_fetch_object($sql3);
            $rows['joblocation'] = $crow->name.','.$srow->name;
            $catsql = mysqli_query($dbcon,"SELECT name FROM test_business WHERE id = '" . (int)$row->category . "'");
            $catrow = mysqli_fetch_object($catsql);
            $exp = unserialize($row->experience);
            $expsql = mysqli_query($dbcon,"SELECT exp_value FROM test_experience WHERE id = '" . (int)$exp['to'] . "'");
            $experience = mysqli_fetch_object($expsql);
            $rows['jobcategory'] = $catrow->name;
            $rows['experience'] = $experience->exp_value;
            $rows['zipcode'] = $row->zipcode;
            $rows['areacode'] = $row->areacode;
            if (preg_match('/[^A-Za-z0-9]+/', $row->job_type)) {
                $rows['job_type'] = $row->job_type;
            } else {
                $params = unserialize($row->job_type);
                //implode into a string
                $param = implode(",",(array)$params);
                $typequery = mysqli_query($dbcon,"SELECT * FROM test_type WHERE id IN ($param)");
                $types = mysqli_fetch_object($typequery);
                $rows['job_type'] = $types->job_type;
            }
            $applysql = mysqli_query($dbcon,"select * from testapp_jobs where job_id=".$row->job_id." and jobseeker_id=".$row->id);
            $applyrow = mysqli_fetch_object($applysql);
            if(!empty($applyrow)) {
                $rows['job_status'] = '1';
            } else {
                $rows['job_status'] = '0';
            }
            $str = 'No of Vacancies: '.$row->num_jobs.PHP_EOL.'Hourly Pay:'.$row->hourly_pay.PHP_EOL.'Duration:'.$row->duration;
            $rows['job_extrainfo'] = utf8_encode($str);
            $rows['posted'] = $row->publish_on;
            $records[] = $rows;
            //print_r($records); die;
        }

        header('Content-Type: application/json');
        echo '{"status":"1","message":"Jobs list found.","jobslist":'.json_encode($records).'}';
    } else {
        header('Content-Type: application/json');
        echo '{"status":"0","message":"No Jobs found."}';
    }
} else {
    header('Content-Type: application/json');
    echo '{"status":"0","message":"Required Fields Missing."}';
}

?>

1 Ответ

0 голосов
/ 24 мая 2018

Форматирование Json вручную может привести к путанице и может привести к ошибкам.

Лучшее решение - использовать json_encode .

. Вот строки, которые вы должны изменить:

//...
echo json_encode(array('status' => '1', 'message' => 'job list found', 'joblist' => $records));

//...
echo json_encode(array('status' => 0, 'message' => 'No jobs found'));

//...
echo json_encode(array('status' => 0, 'message' => 'Required Fields Missing.'));
...