2014-10-20 82 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