我真的是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”,但这没用。
答案 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'];
?>