为什么print_r仍然打印出Json对象?

时间:2013-09-03 22:23:47

标签: php arrays json

我将代码分解为尽可能多的步骤,试图弄清楚它在做什么。

         $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参数。我在这里缺少什么?

4 个答案:

答案 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);

这应该将结果作为数组。