парсинг JSON в Perl - PullRequest
       4

парсинг JSON в Perl

0 голосов
/ 10 мая 2011

Я пытаюсь проанализировать некоторые JSON в Perl, но у меня проблемы с этим. я перечитал документы для этого, но все еще не полностью понимаю, как его кодировать. Я нашел несколько учебных пособий для него, но все еще получаю ошибки. вот код, который у меня есть:

fetch_json_page("http://api.oodle.com/api/v2/listings?key=TEST&format=json&region=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&region=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, чтобы я знал, правильно ли поступают данные

спасибо

Ответы [ 2 ]

4 голосов
/ 10 мая 2011

Этот URL возвращает XML, а не JSON.

РЕДАКТИРОВАТЬ из-за ссылки обновления OP

Если вы посмотрите, это не является действительным объектом JSON, который он возвращаетпарсер не работаетJSON заключен в jsonOodleApi( json здесь );

Если вы удалите объект вызова функции, он будет проанализирован.

0 голосов
/ 10 мая 2011

страница, на которую вы ссылаетесь, не является json.вы не можете разумно ожидать, что парсер json его проанализирует.

возможно, вам нужен парсер xml?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...