处理PHP JSON对象中的数据
来自JSON TwittersearchAPI的趋势数据。
抓取文件使用:
$jsonurl = "http://search.twitter.com/trends.json"; $json = file_get_contents($jsonurl,0,null,null); $json_output = json_decode($json);
我如何使用这个对象的数据。 作为一个数组? 只需要从[name]值中提取数据。
JSON对象包含:
stdClass Object ( [trends] => Array ( [0] => stdClass Object ( [name] => Vote [url] => http://search.twitter.com/search?q=Vote ) [1] => stdClass Object ( [name] => Halloween [url] => http://search.twitter.com/search?q=Halloween ) [2] => stdClass Object ( [name] => Starbucks [url] => http://search.twitter.com/search?q=Starbucks ) [3] => stdClass Object ( [name] => #flylady [url] => http://search.twitter.com/search?q=%23flylady ) [4] => stdClass Object ( [name] => #votereport [url] => http://search.twitter.com/search?q=%23votereport ) [5] => stdClass Object ( [name] => Election Day [url] => http://search.twitter.com/search?q=%22Election+Day%22 ) [6] => stdClass Object ( [name] => #PubCon [url] => http://search.twitter.com/search?q=%23PubCon ) [7] => stdClass Object ( [name] => #defrag08 [url] => http://search.twitter.com/search?q=%23defrag08 ) [8] => stdClass Object ( [name] => Melbourne Cup [url] => http://search.twitter.com/search?q=%22Melbourne+Cup%22 ) [9] => stdClass Object ( [name] => Cheney [url] => http://search.twitter.com/search?q=Cheney ) ) [as_of] => Mon, 03 Nov 2008 21:49:36 +0000 )
你的意思是这样吗?
<?php $jsonurl = "http://search.twitter.com/trends.json"; $json = file_get_contents($jsonurl,0,null,null); $json_output = json_decode($json); foreach ( $json_output->trends as $trend ) { echo "{$trend->name}\n"; }
如果你使用json_decode($string, true)
,你将不会得到任何对象,而是所有的东西都是一个关联数或索引数组。 方式更容易处理,因为PHP提供的stdObject只是一个具有公共属性的哑容器,不能用自己的function扩展。
$array = json_decode($string, true); echo $array['trends'][0]['name'];
只要使用它就像它是你定义的对象。 即
$trends = $json_output->trends;
干净的方式是:
$jsonurl = 'http://search.twitter.com/trends.json'; $json = file_get_contents($jsonurl, 0, null, null); $json_output = json_decode($json, true); $trends = $json_output['trends']; foreach ($trends as $trend) { your_func($trend['name']); }