我刚开始使用JSON,有时候我还是有点头脑不清。为什么有时json输出用圆括号包装
当我检索this link数据,有一对括号包裹JSON字符串的(或对象字面):
({"book":[{"book_ref":"1 S","book_name":"1 Samuel","book_nr":"9","chapter_nr":"3","chapter":{"16":{"verse_nr":"16","verse":"\u4ee5 \u5229 \u547c \u5524 \u6492 \u6bcd \u8033 \u8bf4 \uff1a \u6211 \u513f \u6492 \u6bcd \u8033 \u554a \uff01 \u6492 \u6bcd \u8033 \u56de \u7b54 \u8bf4 \uff1a \u6211 \u5728 \u8fd9 \u91cc \uff01\r\n"}}}],"direction":"LTR","type":"verse","version":"cus"});
在我以往的经验,我从来没有见过这样的事情。 (例如,this link输出具有没有括号JSON字符串。)
出乎我的意料,看来我可以只使用它像往常一样在jQuery的:
jQuery.ajax({
url:'http://getbible.net/json',
dataType: 'jsonp',
data: 'p=John1&v=kjv',
jsonp: 'getbible',
success:function(json){console.log(json)}
});
但是,当我设法得到它使用PHP的file_get_contents()
,然后json_decode()
,括号似乎是在阻碍,json_decode()
什么也没有返回。
那么圆括号的目的是什么?它与jsonp有关吗?无论如何,以PHP方式使用这种JSON而无需编写代码来摆脱括号?
如果你问我,我会说这也是无效的JSON,但重点是,它工作!为什么? – shenkwen
可能是因为'jQuery'尝试接受它,即使无效,而PHP正确地拒绝它 –