gpt4 book ai didi

PHP:处理 'JSONP' 输出与 'JSON' 及其解析?

转载 作者:可可西里 更新时间:2023-11-01 13:22:56 24 4
gpt4 key购买 nike

我在使用 php 的 json_decode 函数解析“jsonp”请求时遇到问题。

我的问题是

一个。 'jsonp' 中的回调函数有什么用,我应该将其关闭,还是我想以某种方式使用它。 ?

b。 如何纠正以“jsonp”格式收到的语法错误?

下面我给出了代码和我得到的响应。

1. 我用 PHP 的 curl 请求一个示例 url

$url = 'https://ssl.domain.com/data/4564/d.jsonp';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
$feed = curl_exec($ch);
curl_close($ch);

echo $feed = gzdecode($feed); // Success its displays the jsonp feed

2. 然后我尝试对接收到的输出进行 json_decode,这会抛出错误 4,意思是 JSON_SYNTAX_ERROR,我猜原因是因为 jsonp 中字符串类型的名称没有被引用。例如类别名称位置

$json_feed = json_decode($feed);
$error = json_last_error();
echo $error; // Throws error no. 4

3. 来自 url 的原始“jsonp”输出。

domain_jsonp_callback({
Categories:[
{
Name:"Artifacts",
Position:14,
Count:70,
ImageUrls:{
i100:"//s3-eu-west-1.amazonaws.com/s.domain.com/1.png",
i120:"//s3-eu-west-1.amazonaws.com/s.domain.com/2.png",
i140:"//s3-eu-west-1.amazonaws.com/s.domain.com/3.png",
i180:"//s3-eu-west-1.amazonaws.com/s.domain.com/4.png",
i220:"//s3-eu-west-1.amazonaws.com/s.domain.com/5.png",
i280:"//s3-eu-west-1.amazonaws.com/s.domain.com/6.png"
}
}
]
});

最佳答案

What is the use of call back function in 'jsonp', should i just trip that off, or am I suppose to use it in some manner. ?

JSON-P 实际上是一个 JavaScript 脚本,由带有参数的函数调用组成。

如果您想在 PHP 中解析它,那么是的,您需要将其剥离。您还需要去掉 ); 最后。

b. How can I rectify the syntax error received in 'jsonp' format ?

您需要修复数据,使其真正成为 JSON。您拥有的数据是 JavaScript 文字,但它不符合与 JSON 匹配的 JavaScript 子集(例如,属性名称不是字符串,但必须是)。

最好从源中获取真正的 JSON 资源。

关于PHP:处理 'JSONP' 输出与 'JSON' 及其解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613140/

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