从PHP中的外部网址解析JSON数据时出现问题

时间:2019-05-01 21:44:47

标签: php json

我真的是json代码中的新手,甚至是javascript代码,但到目前为止我都知道了。 我可以从具有相同信息的本地文件中获取json数据,但不能从以下外部URL中获取:https://s3.amazonaws.com/dolartoday/data.json

这是我的代码:

<?php

$json = file_get_contents("https://s3.amazonaws.com/dolartoday/data.json", 'jsonp');
$data = json_decode($json, true);

echo $data['USD']['dolartoday'];

?>

期望的结果,像这样:6124.24

注意:这段代码是可以的,我从具有相同值的本地文件中获取数据,但我无法从此外部URL中专门获取json数据。 我还添加了“ jsonp”,但这没用。

2 个答案:

答案 0 :(得分:5)

您在S3上的JSON文档无效。

JSON必须使用UTF-8,但您似乎在其中具有扩展的ASCII字符。

正确的错误检查会发现这一点。

$data = json_decode($json, true);
if (is_null($data)) {
    echo json_last_error_msg();
    die;
}

本应打印的

Malformed UTF-8 characters, possibly incorrectly encoded

答案 1 :(得分:0)

感谢@Stephen的澄清,我找到了解决问题的方法。

<?php
$json = file_get_contents("https://s3.amazonaws.com/dolartoday/data.json", 'jsonp');
$utf8 = utf8_decode($json); //decode UTF-8
$data = json_decode($utf8, true);

echo $data['USD']['dolartoday'];
?>