我将代码分解为尽可能多的步骤,试图弄清楚它在做什么。
$addsData='http://football.myfantasyleague.com/2013/exportTYPE=topAdds&L=&W=&JSON=1';
$addsData = json_encode(file_get_contents($addsData));
$addersData = file_put_contents("addsData.txt", $addsData);
$getAdds = file_get_contents("addsData.txt");
$topAddsData = json_decode($getAdds, true);
echo "<pre>";
print_r($topAddsData);
echo "</pre>";
这是我得到的结果......
"version":"1.0","topAdds":{"week":"1","player":[{"percent":"25.95","id":"9705"},{"percent":"23.92","id":"10372"},{"percent":"23.72","id":"11440"},{"percent":"23.43","id":"11259"},{"percent":"20.29","id":"9079"},{"percent":"17.06","id":"10048"},{"percent":"16.93","id":"11227"},{"percent":"14.66","id":"10500"},{"percent":"14.10","id":"9964"},{"percent":"13.90","id":"10862"},{"percent":"13.80","id":"9834"},{"percent":"13.55","id":"10355"},{"percent":"13.29","id":"10961"},{"percent":"13.27","id":"9437"},{"percent":"11.87","id":"9912"},
}
通过阅读本手册,我的理解是它应该是一个关联数组,因为我传入了true参数。我在这里缺少什么?
答案 0 :(得分:5)
您正在查询的URL已经返回了一个JSON字符串(可以从URL参数中看到),然后再次对其进行编码。因此,之后的解码仍然会留下JSON字符串。
例如,如果URL的内容(以及$addsData
的初始值)描述了一个对象:
{ "foo": "bar" }
然后在编码后,$addsData
的新值描述了一个字符串:
"{ \"foo\": \"bar\" }"
略过json_encode
,事情应该可以正常工作。
答案 1 :(得分:1)
您正在对数据进行编码,然后再次对其进行解码。不要重新编码数据。按原样使用它。改变这一行:
$addsData = json_encode(file_get_contents($addsData));
对此:
$addsData = file_get_contents($addsData);
答案 2 :(得分:1)
可能您的数据无效JSON。你可以在这里查看:http://jsonlint.com/ 您的代码在有效的JSON文件上正常工作。
答案 3 :(得分:1)
一个简单的解决方案是
$arrJson = json_decode('http://football.myfantasyleague.com/2013/exportTYPE=topAdds&L=&W=&JSON=1');
print_r($arrJson);
这应该将结果作为数组。