2011-04-25 63 views
2

我使用JSON PHP和Javascript/jQuery的間去...出於某種原因,我拔出MSSQL表的數據intermittenly使我的JSON無效。我看不到任何理由,爲什麼這應該是無效的...和相同的一組數據適用於OTHER條目。我試過不同的字符編碼...我嘗試過使用htmlentities()和htmlspecialchars(),並且certian條目仍然使JSON無效。JSON無效:隱形字符?

這裏是無效JSON的例子

 
{"TASK": "test","TYPE": "Other Issue","SUBTYPE": "","CATEGORY": "","REQUEST": "Mat Gilbert","OPENDATE": "Dec 8 2010 5:12PM","PRIORITY": "2 - Low","DUEDATE": "","DESCRIPT": "12/8/2010 12:12 PM Eastern Standard Time - scldom\mgilbert test\n","STATUS": "","RESPONS": ""}

當我使用jsonlint ......它告訴我下面的:

語法錯誤,在第10行

線10意外TINVALID 「DESCRIPT」字段。

完全迷路了,爲什麼這是無效的JSON。請幫忙。

+0

您使用json_encode(),而不是試圖手工工藝JSON自己,是否正確? – EMI 2011-04-25 16:12:24

+0

ヶ輛/用htmlspecialchars是編碼的HTML文本... JSON具有絕對nothign做HTML - 你必須生成有效的JavaScript的文字,這是一個完全不同的球賽。 – 2011-04-25 16:37:22

回答

5

你必須逃離這個斜線scldom\mgilbert像這樣scldom\\mgilbert

爲了節省自己的後患產生正確的JSON,您可以使用PHP的json_encode()功能。

+0

非常感謝你這麼做...不幸的是,我使用的PHP版本(4.3.9)沒有這個功能,維護環境的人不想升級到5.x.我編寫了自己的函數來導出JSON數據格式......我將馬上包含它! – DirtyBirdNJ 2011-04-25 17:42:30

2

此:

scldom\mgilbert 

\m是無效的。將其更改爲\\m