gpt4 book ai didi

php - 为什么有时 json 输出用括号括起来

转载 作者:可可西里 更新时间:2023-11-01 00:58:36 24 4
gpt4 key购买 nike

我刚开始使用 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 而无需编写代码来去掉括号?

最佳答案

您应该在您提供的用于访问数据的 url 中使用回调参数。因为数据交换格式是jsonp。添加这些括号可能是因为回调被评估为空字符串。

使用您提供的网址查看下面的示例。

https://getbible.net/json?passage=1samuel3:16&v=cus&callback=foo //foo is the callback name

它返回回调名称为 foo 的数据。

foo({"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"});

请参阅下面的示例,其中显示了如何访问数据。

var url="https://getbible.net/json?passage=1samuel3:16&v=cus&";
var callbackname = "callback";
$.getJSON(url+'callback=' + callbackname, function(json){
//loop through data
$.each(json.book,function(i,dat){
document.write(dat.book_ref); //print the book reference "1 S"
});

});

关于php - 为什么有时 json 输出用括号括起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34076327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com