12

像往常一样,我很高兴与 CPAN 打交道,因为它满足了我们的所有需求。像往常一样,我迷路了,因为有很多东西。

我可以JSON一个人找到核心,另一个人感到热情JSON::Tiny

我的需求非常简单(从Open Library API解析东西),也许有一天,会公开我们自己的数据。

您是否喜欢此任务的任何其他模块?

4

6 回答 6

18

JSON模块就像一个冠军,但如果你需要一个更快的解析器,使用这个:JSON::XS,它需要一个本地编译。

请注意,JSON 版本 2.0 及更高版本只是 JSON::XS(如果已安装)或 JSON::PP(后备)的前端。

于 2013-01-29T20:25:19.790 回答
12

[更新:我现在推荐Cpanel::JSON::XS而不是 JSON::XS。Cpanel::JSON::XS 是一个更好维护的 JSON::XS 版本。]

我总是使用JSON::XS。完整、强大、经过验证、快速*、易于使用,如果您需要,还可以提供一点灵活性。

它可能是最常用的 JSON 解析器,尽管大多数人通过JSON访问它(但这样做有使用较慢的JSON::PP的风险)。

* — 根据JSON::Tiny的文档,比 JSON::Tiny 快“一个数量级”。

于 2013-01-29T20:23:05.157 回答
11

既然您说您是从在线资源获取数据,您可能会考虑使用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响应对象上的方法要么返回整个解析的数据结构,要么可以采用指针字符串(如第二个示例中所示)来仅返回一个子集以使您快速进行。享受。

于 2013-01-30T05:14:26.903 回答
8

我会推荐JSON::MaybeXS - 使用 Cpanel::JSON::XS 并回退到 JSON::XS 和 JSON::PP。

Cpanel::JSON::XS 比 JSON::XS 有所改进,因此 JSON::MaybeXS 使您的代码美观且可移植。

如果我不确定在特定情况下使用哪个模块,通常我会查看Task::Kensho,尽管他们目前没有 JSON,但我已经向他们报告了!

于 2015-04-03T18:22:45.973 回答
4

我一有机会就开始使用Mojo::JSON 。Mojolicious易于安装,正如Joel Berger他的回答中所展示的那样,它具有更多功能。

于 2015-04-29T08:32:23.640 回答
2

JSON::XS将是一个很好的模块。

于 2013-01-29T20:28:56.207 回答