像往常一样,我很乐意与CPAN打交道,因为它得到了我们所需要的一切。像往常一样,我迷失了,因为有很多东西。
我可以自己找到核心JSON
,并感受JSON::Tiny
其他人的热情。
我的需求非常简单(解析来自Open Library API的东西),也许有一天会暴露我们自己的数据。
您是否还有其他任何模块可用于此任务?
答案 0 :(得分:18)
JSON模块就像一个冠军,但如果你需要一个更快的解析器,请使用这个:JSON::XS,这需要一个本机编译。
请注意,JSON 2.0及更高版本仅仅是JSON :: XS(如果已安装)或JSON :: PP(后备)的前端。
答案 1 :(得分:12)
我总是使用JSON::XS。完整,强大,经过验证,快速*,易于使用,甚至在您需要时也具有一定的灵活性。
它可能是最常用的JSON解析器,但大多数都通过JSON访问它(但这样做会冒更慢的JSON::PP使用)。
根据{{3}}的文档,* - 比JSON :: Tiny快“一个数量级”。
答案 2 :(得分:11)
由于您说您是从在线来源获取数据,因此您可以考虑使用Mojolicious工具套件。通过这种方式,您可以get the data,parse it甚至可以使用JSON pointers来提取信息。
基本:
#!/usr/bin/env perl
use strict;
use warnings;
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
my $data = $ua->get('http://openlibrary.org/search.json?title=perl%20modules')
->res
->json;
使用url构造函数和JSON指针:
#!/usr/bin/env perl
use strict;
use warnings;
use v5.10;
use Mojo::URL;
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
my $url = Mojo::URL->new('http://openlibrary.org/search.json')
->query( title => 'perl modules' );
say $ua->get($url)
->res
->json('/docs/0/title_suggest');
请注意,响应对象上的json
方法要么返回整个已解析的数据结构,要么可以使用指针字符串(如第二个示例中所示)返回一个子集以使您快速前进。享受。
答案 3 :(得分:7)
我建议使用JSON::MaybeXS - 使用Cpanel :: JSON :: XS并回退到JSON :: XS和JSON :: PP。
Cpanel :: JSON :: XS比JSON :: XS有improvements,因此JSON :: MaybeXS使您的代码更好,更便携。
如果我不确定在特定情况下使用哪个模块,我通常会查看Task::Kensho,尽管他们目前还没有JSON,我已经报道了对他们来说!
答案 4 :(得分:4)
我每次机会都开始使用Mojo::JSON。 Mojolicious易于安装,而Joel Berger显示his answer,它还有更多内容。
答案 5 :(得分:2)
JSON::XS将是一个很好的模块。