用perl解析json
我试图用perl解析一些json,但遇到了问题。我已经阅读了它的文档,但仍然不完全理解如何编写代码。我找到了一些教程,但仍然有错误。以下是我的代码:用perl解析json,perl,json,Perl,Json,我试图用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
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有问题。我添加了打印转储程序来尝试打印json响应,以便知道数据是否正确输入
谢谢链接到您的页面不是json。您不能合理地期望json解析器对其进行解析
也许您需要xml解析器?链接到您的页面不是json。您不能合理地期望json解析器对其进行解析
也许您需要一个xml解析器?该URL返回xml,而不是JSON 由于OP更新链接而进行编辑
如果你看,它返回的不是一个有效的JSON对象,因此你的解析器失败了。JSON由
jsonoodlappi(
JSON在这里)包装代码>
如果删除函数调用,它将解析。该URL返回XML,而不是JSON
由于OP更新链接而进行编辑
如果你看,它返回的不是一个有效的JSON对象,因此你的解析器失败了。JSON由jsonoodlappi(
JSON在这里)包装代码>
如果删除函数调用,它将进行解析。我更新了链接。我忘了包括format=json。仍然是相同的错误。如果你看,它返回的不是一个有效的JSON对象,因此你的解析器失败了。JSON由jsonOodleApi()包装代码>我喜欢声称返回FOO的api,但实际上返回的几乎与FOO类似的东西。由于该字符串较大,为了获得最佳速度,请使用substr
删除垃圾<代码>substr$json,0,13='';substr$json,-2=''代码>有关substr的帮助,请参见perldoc-f substr
。我更新了链接。我忘了包括format=json。仍然是相同的错误。如果你看,它返回的不是一个有效的JSON对象,因此你的解析器失败了。JSON由jsonOodleApi()包装代码>我喜欢声称返回FOO的api,但实际上返回的几乎与FOO类似的东西。由于该字符串较大,为了获得最佳速度,请使用substr
删除垃圾<代码>substr$json,0,13='';substr$json,-2=''代码>有关substr的帮助,请参见perldoc-f substr
。我更新了链接。我忘了包括format=json。还是相同的错误。我更新了链接。我忘了包括format=json。还是一样的错误。嘿,尽管还有很多例子使用它,但不要使用间接对象表示法。这意味着,比如说my$json=json->new
而不是my$json=newjson代码>。与后面的语法相关的一些潜在的毛茸茸的bug可以通过使用另一种形式完全避免。有关更多信息,请参阅perldoc perlsub。嘿,尽管还有很多例子使用它,但不要使用间接对象表示法。这意味着,比如说my$json=json->new
而不是my$json=newjson代码>。与后面的语法相关的一些潜在的毛茸茸的bug可以通过使用另一种形式完全避免。有关更多信息,请参阅perldoc perlsub。