Pourquoi cela ne fonctionne-t-il pas? I Obtenir l'erreur: P> my $myHashEncoded = encode_json \%myHash;
my $myHashDecoded = decode_json($enableInputEncoded);
4 Réponses :
Vous codez sur un référence em> à un hachage ( encod_json \% myhash code>), ce qui est correct. Donc, lorsque vous décodez votre chaîne JSON, vous recevez une référence à un hachage. Préparez un
% code> sigil à une référence de hachage à la déréférence IT.
$myHashReferenceDecoded = decode_json($myHashReferenceEncoded);
%myHashDecoded = %$myHashReferenceDecoded;
En supposant que vous utilisez json.pm, La documentation indique :
L'opposé de EnCode_Json: attend une chaîne UTF-8 (binaire) et tente d'analyser que comme un texte JSON codé UTF-8, renvoyant la référence
résultante p>. P>. P>. blockQuote> Donc, vous revenez ce que vous avez mis. Vous mettez dans un hashref et vous obtenez un hashref dos. P>
Si vous voulez un hachage régulier, alors vous voulez juste Déréférence, comme vous le feriez d'autres HASHREF: P>
my $myHashRefDecoded = decode_json($myHashEncoded); my %myHashDecoded = %$myHashRefDecoded;
Merci pour la réponse rapide. Et désolé pour mon ignorance concernant la documentation.
Cela m'a vraiment aidé à grok certains aspects de Perl qui (comme nouveau venu) n'avaient pas beaucoup de sens pour moi. Merci!
L'API JSON est cohérente. Si vous utilisez une référence à un hachage lorsque vous codez, vous obtenez également une référence de hachage lors du décodage.
Donc, si vous souhaitez stocker le résultat dans une variable de hachage pure, vous devez dréerence du résultat de solution: décod_json code> avec
% {...} code>.
my $myHashEncoded = encode_json \%myHash;
my %myHashDecoded = %{ decode_json($myHashEncoded) };
Sur la ligne suivante, vous faites deux choses: vous créez une référence au hasch ( \ code>), et vous encodez le résultat (
encod_json code>):
my $myHashDecoded = decode_json($myHashEncoded);
Quel module obtenez-vous
encod_json code> et
décod_json code> de?
J'ai inclus Utiliser Json;
Vous pouvez déréférence hachage,
mon% myhashédecoded =% {décodé_json ($ activéinpooded)}; code>