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

[更新: JSON::XS よりもCpanel::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応答オブジェクトのメソッドは、解析されたデータ構造全体を返すか、(2 番目の例のように) ポインター文字列を取得してサブセットのみを返すことができることに注意してください。楽しみ。

于 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 に答える