2009-10-09 7 views
9

Je veux utiliser le script Perl qui récupère les données JSON et les convertit en fichier XML. Comment puis-je faire ça en Perl?Comment puis-je analyser JSON en Perl?

+3

http://json.org/ liens vers http://search.cpan.org/search?query=JSON –

+1

Ne pas mettre dans les balises jokey. Il est beaucoup plus difficile pour les gens de trouver des questions et des réponses. –

+3

@Alex Reynolds: Certaines questions méritent des réponses et d'autres non. Plus précisément, les questions de type * send-me-teh-codez * ne le sont pas. Parfois, cependant, la question peut être récupérée. Dans ce cas, après une deuxième considération, j'ai décidé de régler la question. À l'avenir, vous souhaiterez peut-être également corriger la question et modifier les tags. En ce qui concerne mon attitude quant à quand une question devrait être réparée par rapport à gauche de languir, voir http://meta.stackexchange.com/questions/24838/are-you-less-likely-to-down-vote- someomewhose- gravatar-is-a-photograph-of-them/24862 # 24862 –

Répondre

10

Installer: XML::XML2JSON avec

XML sudo CPAN :: xml2json

puis essayez:

use XML::XML2JSON; 
my $JSON = '{"entry":{"name":"Douglas Crockford","phone":"555 123 456"}}'; 
my $XML2JSON = XML::XML2JSON->new(); 
my $Obj = $XML2JSON->json2obj($JSON); 
my $XML = $XML2JSON->obj2xml($Obj); 
print $XML; 
14
use JSON; 

my $json_string = '................'; 

my $deserialized = from_json($json_string); 

C'est tout - vos données JSON est analysé et stocké en $ désérialisé.

+4

Si la performance est un problème, installez aussi JSON :: XS (JSON l'utilisera s'il y est ... aucun changement de code n'est nécessaire). – ysth

+0

Cela ne produit pas de code XML. – LeeGee

+0

Eh bien, bien sûr que non. Il n'y a pas d'informations sur la façon dont le fichier xml devrait ressembler (par exemple: ce qui devrait être un attribut, et quelle balise), il est donc impossible de construire un fichier xml à partir de données sans spécification de schéma. Si le schéma est "any, juste le rendre valide" - 'use XML :: Simple; print XMLout ($ désérialisé); ' –