使用JSON.parse()的Json解析错误

时间:2014-10-20 06:52:01

标签: php json

我开发了一个api,它将以json格式发布一些数据,以便在Android应用中使用。但是我得到json解析错误。我是整个json事情的新手,因此无法理解错误的含义。

这是php后端生成的json编码输出

   {
    "data": [
        {
            "id": "2",
            "name": "Rice",
            "price": "120",
            "description": "Plain Rice",
            "image": "6990_abstract-photo-2.jpg",
            "time": "12 mins",
            "catagory": "Lunch",
            "subcat": ""
        }
    ]
}{
    "data": [
        {
            "id": "4",
            "name": "Dal",
            "price": "5",
            "description": "dadadad",
            "image": "",
            "time": "20 mins",
            "catagory": "Dinner",
            "subcat": ""
        }
    ]
}{
    "data": [
        "catagory": "Soup"
    ]
}

这是在线json解析器提供的错误

SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 2 column 1 of the JSON data

这里究竟出了什么问题?你能否为我提供以下数据的正确json输出?

2 个答案:

答案 0 :(得分:2)

这应该清除它

    $main = array();
    while($row = $result->fetch(PDO::FETCH_ASSOC)){
        $cat    = $row['category'];
        $query1 = "SELECT * FROM item WHERE catagory='$cat'";       //Prepare login query
        $value  = $DBH->query($query1);
        if($row1 = $value->fetch(PDO::FETCH_OBJ))
        {
            $main[] = array('data'=>array($row1));
        }
        else
        {
            $main[] = array('data'=>array('catagory'=>$row['category']));
        }
    }
    echo json_encode($main);

答案 1 :(得分:1)

您不应该手动创建json字符串。创建数组结构,然后最后调用json_encode()

$data = array();

try
{
    $query = "SELECT category FROM category"; // select category FROM category? what?
    $result= $DBH->query($query);
    while($row = $result->fetch(PDO::FETCH_ASSOC)){
        $cat    = $row['category'];
        $query1 = "SELECT * FROM item WHERE catagory='$cat'";
        $value  = $DBH->query($query1);
        if($value->rowCount() > 0) {
            $data[] = array('data' => $value->fetch(PDO::FETCH_ASSOC));
        }
        else {
            $sub = array('category' => $row['category']);
            $data[] = array('data' => $sub);
        }

    }

    $result->closeCursor();
    $DBH = null;

    echo json_encode($data); // encode at the end
}
catch(PDOException $e)
{
    print $e->getMessage ();
    die();
}