2013-01-12 9 views
5

Non riesco a utilizzare correttamente l'interfaccia OO JSON::XS. I seguenti gracchia con un errore che non posso rintracciare:JSON :: XS "Uso" gracchiare

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

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

Questa gracchia con il seguente: Usage: JSON::XS::encode_json(scalar) at test.pl line 5. ho pettinatura attraverso il codice per JSON::XS e non riesco a trovare un "Utilizzo:" avvertimento ovunque. Il mio utilizzo sembra essere ben adattato agli esempi nella documentazione. Qualcuno può dirmi dove ho sbagliato?

risposta

10

JSON::XS ha due interfacce: funzionale e OO.

  • Nell'interfaccia funzionale, il nome della funzione è encode_json.
  • Nell'interfaccia OO, il metodo è semplicemente encode, non encode_json.

Entrambe le due seguenti frammenti lavorare:

# 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" 
           | # ] 
+0

La versione OO è confuso tra '@ array' e' $ array' (e assegna un riferimento array '@ array') – Borodin

+0

@Borodin : Ben individuato ... risolto – Zaid

+0

Grazie per aver risposto a questo! Mi chiedo perché l'autore non abbia usato solo un nome di metodo e verificasse se il primo argomento fosse un riferimento JSON :: XS ... –

Problemi correlati