像往常一样,我很高兴与 CPAN 打交道,因为它满足了我们的所有需求。像往常一样,我迷路了,因为有很多东西。
我可以JSON
一个人找到核心,另一个人感到热情JSON::Tiny
。
我的需求非常简单(从Open Library API解析东西),也许有一天,会公开我们自己的数据。
您是否喜欢此任务的任何其他模块?
像往常一样,我很高兴与 CPAN 打交道,因为它满足了我们的所有需求。像往常一样,我迷路了,因为有很多东西。
我可以JSON
一个人找到核心,另一个人感到热情JSON::Tiny
。
我的需求非常简单(从Open Library API解析东西),也许有一天,会公开我们自己的数据。
您是否喜欢此任务的任何其他模块?
[更新:我现在推荐Cpanel::JSON::XS而不是 JSON::XS。Cpanel::JSON::XS 是一个更好维护的 JSON::XS 版本。]
我总是使用JSON::XS。完整、强大、经过验证、快速*、易于使用,如果您需要,还可以提供一点灵活性。
它可能是最常用的 JSON 解析器,尽管大多数人通过JSON访问它(但这样做有使用较慢的JSON::PP的风险)。
* — 根据JSON::Tiny的文档,比 JSON::Tiny 快“一个数量级”。
既然您说您是从在线资源获取数据,您可能会考虑使用Mojolicious工具套件。通过这种方式,您可以获得数据、解析它,甚至可以使用JSON 指针来提取信息。
基本的:
#!/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
响应对象上的方法要么返回整个解析的数据结构,要么可以采用指针字符串(如第二个示例中所示)来仅返回一个子集以使您快速进行。享受。
我会推荐JSON::MaybeXS - 使用 Cpanel::JSON::XS 并回退到 JSON::XS 和 JSON::PP。
Cpanel::JSON::XS 比 JSON::XS 有所改进,因此 JSON::MaybeXS 使您的代码美观且可移植。
如果我不确定在特定情况下使用哪个模块,通常我会查看Task::Kensho,尽管他们目前没有 JSON,但我已经向他们报告了!
我一有机会就开始使用Mojo::JSON 。Mojolicious易于安装,正如Joel Berger在他的回答中所展示的那样,它具有更多功能。
JSON::XS将是一个很好的模块。