perl:处理来自crypto_json()的错误返回值

问题描述 投票:0回答:1

[我正在尝试构建一个脚本,以处理joomla文章中的JSON数据,但我不知道如何处理来自decode_json()函数的失败返回值。

这是我试图用来从本文中提取“ urls” JSON数据的代码

 my @rv        = ();
 while (my $ref = $sth->fetchrow_hashref()) {
    print "urls: $ref->{'urls'}\n";
    my $decoded_urls = decode_json($ref->{'urls'}) or next;
    my $url = $decoded_urls->{'urla'};
    if ($url ne 0) {
       push @rv, $ref;
    }
  }

这将打印以下内容

 urls: {"urla":"http://www.MimeStar.com/html/press_rel.htm","urlatext":"</i>Posted by: <a href="mailto:[email protected]">Benjamin D.</a>","targeta":"1","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}

然后窒息,而不仅仅是前进到下一篇文章

 ,  or } expected while parsing object/hash, at character offset 89 (before "mailto:ben@example...") at ./find-remote-links.pl line 271.               

发生错误时如何使程序前进至下一行(而不是终止)?

json perl parsing joomla
1个回答
1
投票

为了期望,使用eval BLOCK

eval BLOCK
© www.soinside.com 2019 - 2024. All rights reserved.