6

JSON::XSの OO インターフェイスを適切に使用できないようです。私が追跡できないエラーで次の鳴き声:

use JSON::XS;
my $array = ['foo', 'bar'];

my $coder = JSON::XS->new->utf8->pretty;
print $coder->encode_json($array);

これは次のように鳴き声を上げます:Usage: JSON::XS::encode_json(scalar) at test.pl line 5.コードをくまJSON::XSなく調べましたが、"Usage:" 警告がどこにも見つかりません。私の使用法は、ドキュメントの例とかなりよく一致しているようです。どこが間違っているのか誰か教えてもらえますか?

4

1 に答える 1

11

JSON::XSには、機能と OO の 2 つのインターフェイスがあります。

  • 関数型インターフェースでは、関数名はencode_json.
  • OO インターフェイスでは、メソッドは単にencodeであり、 ではありませんencode_json

次の 2 つのスニペットはどちらも機能します。

# Functional                  | # OO
------------------------------+-----------------------------------------
                              | 
use JSON::XS;                 | use JSON::XS;
my $array = ['foo', 'bar'];   | my $array = [ 'foo', 'bar' ];
                              |
print encode_json($array);    | my $coder = JSON::XS->new->utf8->pretty;
                              | print $coder->encode($array);
                              |
# ["foo","bar"]               | # [
                              | #    "foo",
                              | #    "bar"
                              | # ]
于 2013-01-12T08:29:02.340 に答える