2011-04-25 65 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