2013-10-05 50 views
1

我如何通过与PHP下面RAW数据循环,得到这样的结果:如何遍历原始JSON数据?

结果:

NAME1 - SONG1 
NAME2 - SONG2 
NAME3 - SONG3 

原始数据:

{"artist":"NAME1","title":"SONG1","album":null,"royaltytrackid":null,"url":null,"image":"test1.jpg","time":1380910069,"localtime":"11:07 AM"}, 
{"artist":"NAME2","title":"SONG2","album":null,"royaltytrackid":null,"url":null,"image":"test2.jpg","time":1380909866,"localtime":"11:04 AM"}, 
{"artist":"NAME2","title":"SONG3","album":null,"royaltytrackid":null,"url":null,"image":"test3.jpg","time":1380909864,"localtime":"11:04 AM"} 
+2

你的JSON似乎无效。它应该被封装在'[...]' – Boaz

+0

这是一个问题,如果原始数据是在一个PHP文件中的RAW文本?已经添加了[...] – Stefan

回答

5

它看起来像你的输入数据丢失[],因此在将其解析为JSON之前,需要添加以下内容:

$rawData = <<<EOL 
{"artist":"NAME1","title":"SONG1","album":null,"royaltytrackid":null,"url":null,"image":"test1.jpg","time":1380910069,"localtime":"11:07 AM"}, 
{"artist":"NAME2","title":"SONG2","album":null,"royaltytrackid":null,"url":null,"image":"test2.jpg","time":1380909866,"localtime":"11:04 AM"}, 
{"artist":"NAME2","title":"SONG3","album":null,"royaltytrackid":null,"url":null,"image":"test3.jpg","time":1380909864,"localtime":"11:04 AM"} 
EOL; 

$data = json_decode("[" . $rawData . "]"); 

foreach ($data as $item) { 
    echo $item->artist, " - ", $item->title, "\n"; 
} 

输出:

NAME1 - SONG1 
NAME2 - SONG2 
NAME2 - SONG3 
+1

@DannyHearnah:已经修复;对不起,一段时间以来,这种PHP不直观的做法已经远远不够。 –

+0

我注意到:-)再次投票 –