【发布时间】:2011-05-10 09:56:05
【问题描述】:
我正在尝试在 perl 中解析一些 json,但遇到了问题。我已经阅读了它的文档,但仍然没有完全理解如何对其进行编码。我找到了一些教程,但仍然出现错误。这是我的代码:
fetch_json_page("http://api.oodle.com/api/v2/listings?key=TEST&format=json®ion=usa&category=sale");
sub fetch_json_page
{
my ($json_url) = @_;
my $browser = WWW::Mechanize->new();
eval{
# download the json page:
print "Getting json $json_url\n";
$browser->get( $json_url );
my $content = $browser->content();
my $json = new JSON;
my $json_text = $json->allow_nonref->utf8($content);
my @decoded_json = decode_json($json_text);
print Dumper(@decoded_json), length(@decoded_json), "\n";
当我运行它时,我得到了这个错误
Getting json http://api.oodle.com/api/v2/listings?key=TEST®ion=usa&category=sale
[[JSON ERROR]] JSON parser crashed! malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at ./oodle2.pl line 35.
这让我想知道我是否正确地获取了数据。正确工作的 url 被粘贴到浏览器中,我用 javascript 做得很好,但是 perl 有问题。我添加了打印 Dumper 片段以尝试打印出 json 响应,以便我知道数据是否正确输入
谢谢
【问题讨论】:
-
嘿,尽管仍有大量使用它的示例,但不要使用间接对象表示法。这意味着,说
my $json = JSON->new;而不是my $json = new JSON;。与后面的语法相关的一些潜在的毛茸茸的错误可以通过使用其他形式完全避免。有关更多信息,请参阅 perldoc perlsub。 perldoc.perl.org/perlsub.html