对于JSON操作,您建议使用哪个Perl模块?

对于JSON操作,您建议使用哪个Perl模块?,json,perl,cpan,perl-module,Json,Perl,Cpan,Perl Module,和往常一样,我很高兴与CPAN打交道,因为它满足了我们的所有需要。和往常一样,我迷路了,因为有很多东西 我可以自己找到核心的一个,而另一个则让我充满热情 我的需求非常简单(解析来自数据库的内容),也许有一天,会公开我们自己的数据 您还喜欢其他模块来完成此任务吗?[更新:我现在推荐使用JSON::XS。Cpanel::JSON::XS是JSON::XS的更好维护版本。] 我总是用。完整、健壮、经验证、快速*、易于使用,如果需要,甚至还有一点灵活性 它可能是使用最多的JSON解析器,尽管大多数人都是

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

我可以自己找到核心的一个,而另一个则让我充满热情

我的需求非常简单(解析来自数据库的内容),也许有一天,会公开我们自己的数据

您还喜欢其他模块来完成此任务吗?

[更新:我现在推荐使用JSON::XS。Cpanel::JSON::XS是JSON::XS的更好维护版本。]

我总是用。完整、健壮、经验证、快速*、易于使用,如果需要,甚至还有一点灵活性

它可能是使用最多的JSON解析器,尽管大多数人都是通过它来访问的(但这样做可能会导致使用速度变慢)

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

模块的工作原理类似于champ,但如果您需要更快的解析器,请使用这个:,它需要本机编译


注意JSON版本2及以上仅是JSON::XS(如果已安装)或JSON::PP(后退)./P>< P>将是一个好的模块。

< P>因为您说从在线源获取数据,您可能会考虑工具套件。这样你就可以,甚至可以用来提取信息

基本:

#!/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');
请注意,response对象上的
json
方法要么返回整个已解析的数据结构,要么使用指针字符串(如第二个示例中所示)只返回一个子集以快速运行。享受。

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

Cpanel::JSON::XS超过了JSON::XS,因此JSON::MaybeXS使您的代码美观且可移植


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

我已经开始利用我得到的每一个机会。安装很容易,如中所示,它附带了更多功能。

JSON将在默认情况下使用JSON::XS(如果两者都安装了)。@Sebf,如果您认为速度太快,请随意添加对
sleep
的调用。在该行业有25年的经验,JSON说。24岁的脚本孩子可能会说“JSON::XS”-不要听他们说。“我是不是太脱离接触了?不,是孩子们错了。”-西摩·斯金纳指出,
JSON::PP
是当今的核心模块。似乎非常有趣,使用起来也很简单。我没有提到我们使用的是Catalyst,但据我所知,它们并不是它的等价物。现在人们普遍认为这两个项目是不同的。许多人会说在Catalyst项目中使用Mojolicous是愚蠢的,但由于它太轻,我认为没有理由不亲自使用。:-)Tiny的用例是需要一个轻量级的JSON实现,而不像XS那样需要编译器。它也适合捆绑。如果您需要一个纯Perl JSON包,它就是为您准备的。如果你能负担得起XS工具链,JSON::XS会更快。感谢@DavidO的精确性,我终于使用了JSON::XS,而且它非常好用而且简单。Cpanel::JSON::XS是最快和最新的。请看《比较JSON解码器的速度》一文@szagab。你给出的URL实际上并没有说它是最快的。另外,Cpanel fork不包含任何修复程序,只有一些肮脏的黑客可以稍后攻击你。很高兴你向Task::Kensho报告它!由于有一些关于XML的模块,JSON似乎也很重要。Task::Kensho是根据票证(或者更好的拉请求!)形式的建议来管理的,总是受欢迎的。TK中的所有内容都要经过一个基于
irc.perl.org
上的
#epo ec
的讨论和审查过程。如果您遇到JSON::XS中的众多错误之一,您可能需要退回到Cpanel::JSON::XS,这就解决了这些错误。或者使用JSON::Any或JSON::MaybeXS,它们会选择最好的一个。将JSON::XS称为“主动维护”可能是一个长期的选择,您可能会非常孤独地接受这种观点。他拒绝使用bugtracker,因为“RT太差劲了”,所以你看不到其他人报告的错误,我必须为我们的fork修复这些错误。由于非技术原因,这些错误大多被忽略。RT很烂,是的,我同意,所以我用了一个更好的追踪器。但这并不是忽视大多数错误报告的借口。@rurban,我想到的是Text::csvxs。我不知道JSON::XS的维护历史。JSON::XS的作者确实是一个很难对付的人。(对于EaxPle,他拒绝使用CPAN-RT,但没有提供在元文件中报告的替代方法,因此CPAN表示要使用CPAN-RT…)JSON::XS显然是积极维护的@鲁班:你应该停止传播FUD,也许你的cpanel模块可以少一点攻击性,因为它大多是肮脏的黑客。