你会推荐哪种Perl模块用于JSON操作?

smo*_*nff 12 perl json cpan perl-module

像往常一样,我很乐意处理CPAN,因为它得到了我们所需要的一切.像往常一样,我迷失了,因为有很多东西.

我可以自己找到核心JSON,并感受到JSON::Tiny另一个人的热情.

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

你喜欢这个任务的其他模块吗?

Mig*_*Prz 18

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

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

  • @Sebf,如果您觉得它太快,可以随意添加一个对'sleep`的调用. (19认同)
  • "我是如此脱节?不,这是孩子们错了." - 西摩斯金纳 (2认同)

ike*_*ami 12

我总是使用JSON :: XS.完整,强大,经过验证,快速*,易于使用,甚至在您需要时具有一定的灵活性.

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

* - 根据JSON :: Tiny的文档,比JSON :: Tiny快"一个数量级" .


Joe*_*ger 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;
Run Code Online (Sandbox Code Playgroud)

使用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');
Run Code Online (Sandbox Code Playgroud)

请注意,json响应对象上的方法要么返回整个已解析的数据结构,要么可以使用指针字符串(如第二个示例中所示)返回一个子集以使您快速前进.请享用.

  • Mojolicious实际上是由Catalyst的作者编写的,最初是作为它的替代品.现在人们普遍认为这两个是不同的项目.许多人声称在Catalyst项目中使用Mojolicious是愚蠢的,但由于它很轻,我认为没有理由不亲自.:-) (2认同)

Ran*_*ard 7

我建议使用JSON :: MaybeXS - 使用Cpanel :: JSON :: XS并回退到 JSON :: XS和JSON :: PP.

Cpanel :: JSON :: XS 比JSON :: XS有所改进,因此JSON :: MaybeXS使您的代码更好,更便携.

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


bri*_*foy 5

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