用PHP解析JSON数据
问题描述:
这是一个小问题。我正在与一个JSON文件,看起来像这样:用PHP解析JSON数据
{"nodes":
[{"node":
{"Vocabulary name":"Bestseller Format",
"Term":"Hardcover Fiction",
"Bestseller1":"9780470227800",
"Bestseller2":"9781451617962",
"Bestseller3":"9781439167397",
"Bestseller4":"9781617750106",
"Bestseller5":"9780385533300",
"Bestseller6":"9780670022526",
"Bestseller7":"9781609530358",
"Bestseller8":"9780132358040",
"Bestseller9":"9780596159771",
"Bestseller10":"9780151014163",
"Bestseller11":"9780393334807",
"Bestseller12":"9780805090161"}
}]
}
而我想解析它在PHP中。我想出了一个脚本
<?php
$jsonurl = "http://www.xtracrunchy.com/pandpnewlook/?q=pandp/bestsellers";
$json = file_get_contents($jsonurl,NULL, NULL, 0, 1000);
$json_output = json_decode($json,true);
$bestseller_array = $json_output[nodes][0][node];
foreach ($bestseller_array as $key => $value)
{
print $key;
print " - ";
print $value;
print "<br />";
}
?>
我希望能够当我运行此脚本是
词汇名,最终打造畅销书ISBN的有序列表,但唯一的输出我得到的 - 畅销书格式 术语 - 精装小说
当我添加打印计数($ bestseller_array);我只在数组中获得2个元素。
任何帮助,将不胜感激。
答
首先,我强烈建议你使用卷曲的,而不是file_get_contents()
的,因为在some occasions,它不会工作。但既然这不是问题的一部分,我不会再谈这个问题。
其次,你正在使用未命名的文字常量,这是非常糟糕的。
$json_output[nodes][0][node];
应该是:
$json_output['nodes'][0]['node'];
最后,您在上面写的JSON字符串与该网址上返回的内容不匹配,并且该脚本按照预期在此“新”json上工作。
+0
谢谢。这实际上很有帮助。它仍然不起作用,但是这种指向我的方向是正确的。 – flakes 2011-04-26 23:19:58
答
@flakes,如果你访问在$ jsonurl你的网址,你只能得到:
{"nodes":[{"node":{"Vocabulary name":"Bestseller Format","Term":"Hardcover Fiction"}}]}
你确定你不会错过从URL的东西吗?
答
服务器的输出与您的期望不符。
var_dump($json);
//string(87) "{"nodes":[{"node":{"Vocabulary name":"Bestseller Format","Term":"Hardcover Fiction"}}]}"
希望帮助...的
你可以把代码放在代码标签中吗?并使一切可读...谢谢:D – fingerman 2011-04-26 22:56:51
修正了我自己的格式。下一次,在每行代码前添加4个空格。 – Christian 2011-04-26 22:59:42
谢谢@christian – fingerman 2011-04-26 23:00:41