2013-07-22 104 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/非常有用,因为它是一个非常小的规格。