2017-02-24 198 views
0

這是我擁有的JSON字符串。我已刪除從JSON開閉括號中,因爲我需要使用jQuery中的JSON值選擇框實際加載的數據:解析JSON拋出錯誤

{ 
    "text": "Pediatric FA, CPR & AED (2015)", 
    "id": "128177000002431552~Pediatric FA, CPR & AED DVD Set (2015)~YES~117.19" 
}, { 
    "text": "FA, CPR & AED Manual (2015)", 
    "id": "128177000002431564~FA, CPR & AED Manual (2015)~YES~17.73" 
} 

,這裏是我的JavaScript代碼

$.post("items.cfm",{"term":request.term}) 
       .done(function(data){ 
        try{ 
         var obj = JSON.parse(data), 
         values = []; 
         $.each(data, function(i, obj) { 
          values.push({"label":obj[x].text, "value":obj[x].id, "price":obj[x].id.split('~')[3]}); 
         }) 
         response(values); 
        }catch(e){ 
         alert(e); 
        } 
       }) 
       .fail(function(e){ 
        alert(e); 
       }); 

每次運行時我都會收到錯誤

SyntaxError: Unexpected token , in JSON at position

+0

您是否檢查過瀏覽器控制檯以查看HTTP請求返回的實際JSON內容?它是否真的說,「...在位置」沒有更多的信息? – Pointy

+0

除非將它們作爲數組封裝在方括號中,否則不能在JSON字符串中包含多個對象。在JSON字符串的兩端添加'['和']'使其有效。 – Santi

+0

我在我的POST中說我刪除了開始和結束括號,如果我不刪除它們,那麼我得到這個錯誤:'TypeError:不能使用'在'運算符搜索'4592'在' – Hane

回答

3

您有兩個由逗號分隔的JSON對象。如果你的意思是這是一個數組,你需要使用數組括號括起來:

[ 
{ 
    "text": "Pediatric FA, CPR & AED (2015)", 
    "id": "128177000002431552~Pediatric FA, CPR & AED DVD Set (2015)~YES~117.19" 
}, { 
    "text": "FA, CPR & AED Manual (2015)", 
    "id": "128177000002431564~FA, CPR & AED Manual (2015)~YES~17.73" 
} 
] 

作爲一個側面說明,如果你的服務器產生無效的JSON,你應該在多數民衆贊成產生的代碼很好看JSON。機會是,有代碼試圖手動生成這個字符串,這是一個不好的做法。服務器應該使用庫將返回的值轉換爲JSON。

+0

我在我的POST我刪除了開始和結束括號,如果我不刪除它們,然後我得到這個錯誤:'TypeError:不能使用'在'運算符搜索'4592'在' – Hane

+0

@Hane:你得到的這個其他錯誤是另一個問題完全是[自己修復](http://stackoverflow.com/a/18502129/120955)。 – StriplingWarrior