2013-07-22 99 views
0

我試圖發送一些電子郵件,我的PHP服務器JSON格式,但是當我驗證JSON它顯示一些錯誤爲什麼這個JSON無效?

{"function":"contacts", "parameters": {"emails": "(
    "[email protected]", 
    "[email protected]", 
    "[email protected]" 
)","user_id": "90"},"token":""} 

錯誤顯示爲 -

Parse error on line 4: 
    ...{  "emails": "(  "[email protected] 
    ----------------------^ 
    Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[' 
+0

你不應該使用方括號? – LokiSinclair

+0

方括號....你犯了一個錯字錯誤! – Devrath

+0

您引用了電子郵件正文,但沒有轉義內部引號。 –

回答

0

emails元件被定義爲字符串開始"(並用)"結束。

在那個字符串中,你有單獨的字符串,每個字符串都以引號開頭和結尾。

這顯然是不正確的。

你可能是打算什麼"emails" : [ ...... ]

(...除非你確實打算用於emails元素是一個字符串,在這種情況下,其中的引號需要進行轉義爲\",因爲這樣做的換行符作爲\n。但我不認爲這就是你的意圖,是嗎?)。

這就是爲什麼你會得到語法錯誤。

不過我猜這裏的關鍵是這樣的問題說明了爲什麼手寫JSON代碼(或其他基於文本的語法如XML)是一個壞主意。您應始終使用編碼器或解碼器從您使用的語言中創建您的JSON字符串。這將避免你不得不處理這樣的問題;如果您使用編碼器,您的JSON將始終有效;你不需要擔心它。

希望有所幫助。

2

您需要使用方所有陣列的括號。現在你正在使用圓括號,而且你也從一個表示字符串而不是數組的引號開始。

要麼你想要整個值是一個字符串,你應該在字符串中用「\」來轉義引號,或者你應該刪除引號並用方括號替換括號。

注意:上面的語法突出顯示應該在哪裏出錯。

0

您的陣列似乎與"( ... )"分隔,而不是[ .. ]。除此之外,這使得它內部的字符串「從裏到外」。如果你的意思是因爲它是一個類似數組的引用字符串,你需要在之內跳過引號它,就像foo \"and\" bar一樣。流程圖http://www.json.org/非常有用,因爲它是一個非常小的規格。