2013-01-12 11 views
5

JSON::XSのOOインターフェイスを正しく使用できないようです。エラーと次croaks私が追跡することはできません。これは、以下でcroaksJSON :: XS "Usage" croak

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のためにコードをコーミングされていると私は見つけることができません「使用法:」どこでも警告します。私の使い方は、ドキュメントの例とよく似ているようです。誰が私が間違っているのか教えてくれますか?

答えて

10

JSON::XSは、機能性およびOOの2つのインタフェースを有する。機能インタフェースで

  • 、関数名がencode_jsonあります。
  • OOインターフェイスでは、方法はencodeであり、encode_jsonではありません。次の二つのスニペットの

両方が動作:

OOバージョンは、@ array`と `$のarray``間混乱(と@ array` `に配列参照を割り当てる)
+0

:よく見つかった...固定 – Borodin

+0

@Borodinさ

# 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" | # ] 
Zaid

+0

これに感謝のおかげで!なぜ私は著者が1つのメソッド名を使用せず、最初の引数がJSON :: XSリファレンスであるかどうかをチェックしていませんか? –