2014-10-20 50 views
1

我开发了一个api,它将以json格式发布一些数据以用于android应用程序。但是我得到json解析错误。我对这个完整的json事物是新手,所以无法理解错误的含义。Json使用JSON解析错误()

这是我的JSON编码的PHP后台生成

{ 
    "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输出?

+1

你的php在哪里? – Ghost 2014-10-20 06:52:54

+2

上面的例子中有3个json对象,如果你想解析所有这些,你需要将它们包装在[] – 2014-10-20 06:53:36

+4

中你的json代码是无效的,因为它们是3个不同的json对象。你能告诉我们你的php代码来生成这个json结果吗? – Jerodev 2014-10-20 06:53:40

回答

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

你不应该手工创建的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(); 
} 
+0

表名和字段名称都是类别:DI是深夜工作我的睡眠剥夺了大脑,不能想出一些不愚蠢的东西:D – 2014-10-20 07:08:06

+0

@RickRoy好吧,你最好休息一下,然后编码,一个休息好的大脑是好的 – Ghost 2014-10-20 07:08:57