我试图以json格式向我的php服务器发送一些电子邮件,但是当我验证json时它显示出一些错误
{"function":"contacts", "parameters": {"emails": "(
"John@mac.com",
"anna@gmail.com",
"hank@mac.com"
)","user_id": "90"},"token":""}
错误显示为 -
Parse error on line 4:
...{ "emails": "( "John@ma
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
答案 0 :(得分:2)
您需要为所有数组使用方括号。现在你正在使用括号,你也开始用一个引号来表示一个字符串而不是一个数组。
要么你想要整个值是一个字符串,你应该在其中用“\”转义字符串中的引号,或者你应该删除引号并用方括号替换括号。
注意:上面的语法突出显示应该提示您出错的地方。
答案 1 :(得分:1)
您需要将JSON更改为以下内容。或者您需要转义电子邮件地址周围的双引号。
{"function":"contacts", "parameters": {"emails": [
"John@mac.com",
"anna@gmail.com",
"hank@mac.com"
],"user_id": "90"},"token":""}
答案 2 :(得分:0)
您的数组似乎与"(
... )"
分隔,而不是[
.. ]
。除此之外,这使得里面的字符串“内外”。如果你意味着它是一个类似于数组的带引号的字符串,你需要转义里面的引号,就像foo \"and\" bar
一样。 http://www.json.org/的流程图非常有用,因为它是一个非常小的规范。
答案 3 :(得分:0)
您的emails
元素被定义为以"(
开头并以)"
结尾的字符串。
在该字符串中,您将拥有单独的字符串,每个字符串以引号开头和结尾。
这显然是不正确的。
您可能想要的是"emails" : [ ...... ]
(...除非您实际上打算将emails
元素作为字符串,在这种情况下,其中的引号需要转义为\"
,换行符为{{} 1}}。但我认为这不是你想要的,是吗?)。
这就是你收到语法错误的原因。
但是我想这里的关键点是这样的问题证明了为什么手写JSON代码(或者其他基于文本的语法,如XML)是一个坏主意。您应始终使用编码器或解码器从您正在使用的语言中创建JSON字符串。这样可以避免你不得不处理这样的问题;如果您使用编码器,您的JSON将始终有效;你不需要担心它。
希望有所帮助。
答案 4 :(得分:0)
我猜你想要:
{
"function":"contacts",
"parameters": {
"emails": [
"John@mac.com",
"anna@gmail.com",
"hank@mac.com"
],
"user_id": "90"
},
"token":""
}