10
votes

Comment puis-je convertir Json en XML à Ruby?

Y a-t-il un moyen de convertir Json en XML dans Ruby?


1 commentaires

J'ai ajouté la balise ActiveSupport et a transformé votre titre en une question.


4 Réponses :


-1
votes

Je ne connais pas un joyau magique pour le faire, mais ce que vous pouvez faire facilement est XML à hachage et hachage à JSON.

require 'json'
my_json = my_hash.to_json


3 commentaires

J'essaie de convertir Json en XML, pas XML à JSON


Ces citations étranges vont-elles au travail, de toute façon? Cela ne semble pas trop en bonne santé.


@Ellusive: Ouais, ils ont l'air funky pour moi aussi. Je pense qu'ils sont des citations intelligentes.



12
votes
require 'active_support' #for to_xml() 'gem install activesupport' use the 2.3 branch
require 'json' #part of ruby 1.9 but otherwise 'gem install json'

my_json = "{\"test\":\"b\"}"
my_xml = JSON.parse(my_json).to_xml(:root => :my_root)
Also note the root argument of to_xml. If you don't specify a root it'll use the word 'hash' as the root which isn't very nice to look at. 

14 commentaires

Ai-je besoin de bijou pour le actif_support ? Je reçois une erreur lorsque j'essaie de besoin .


Oui. Le support actif fait partie du rubis sur les rails. Vous devriez être capable de l'installer avec 'GEM Install ActiveUpport'


Maintenant, chaque fois que j'essaie de l'exécuter, je reçois l'erreur suivante: méthode non définie to_xml 'for # (nométhoderror) . JSON.PARSE` devrait retourner un hachage, ne devrait-il pas?


Oui, ça devrait retourner un hachage. Pouvez-vous poster votre XML?


Je n'ai pas de xml, j'ai du Json, c'est la source JSON renvoyée par l'API Simplenote. C'est un diable de beaucoup de données. Voici le Json Je reviens: GIST.GITUB.COM/B41CD5BB01F6D5DE1053


Ça fonctionne bien pour moi. J'utilise JSON_PURE (1.2.0) et Active_Support (2.3.5). Quelles versions utilisez-vous?


J'utilise JSON_PURE (1.4.6) et Active_Support (3.0.3). Dois-je les désinstaller et essayer avec les versions que vous utilisez?


Je ne peux rien voir blessant quoi que ce soit.


Ouais on dirait qu'ils ont changé d'activesUpport une tonne pour 3.0 et les méthodes TO_XML ne sont plus là.


Après la rétrogradation de JSON_PURE et Active_Support, je reçois cette erreur: gist.github.com/00e934871ea4529fd132


Et, aussi, je serai dans la discussion de rubis si vous souhaitez continuer là-bas.


Quelle version des rubygems utilisez-vous?


D'accord. Je suis aussi dans la chaîne de rubis maintenant.


ActiveSupport ne importe plus toutes les fonctionnalités lorsque vous en avez besoin. Vous devez soit explicitement dire pour importer tout ou spécifier ce que vous voulez. Si la fonction TO_XML n'a pas été définie, vous pourriez avoir ce problème. Voyez ici: Stackoverflow.com/Questtions/3642905/...



7
votes

En ce qui concerne @Rwilliams AKA R-DUB Réponse:

ActiveSupport déplacé ses composants en séparément Modules pour la granularité. Plutôt que de tout charger à la fois, nous pouvons le dire de ne charger que certains sous-ensembles ou, si nous choisissons toujours, nous pouvons tout charger à la fois. Peu importe ce que, nous ne pouvons pas utiliser nécessiter "ActiveSupport" code> comme nous l'avions l'habitude, nous devons utiliser nécessiter "ActiveSupport / tout" code> ou l'un des sous-ensembles. p> xxx pré>

De plus, ActiveSupport contient une prise en charge JSON, de sorte que vous puissiez effectuer la conversion entière avec AR: P>

>> require 'active_support/all' #=> true
>> json = {'foo'=>'bar'}.to_json #=> "{"foo":"bar"}"
>> ActiveSupport::JSON.decode(json).to_xml #=> "<?xml version="1.0" encoding="UTF-8"?>\n<hash>\n  <foo>bar</foo>\n</hash>\n"


0 commentaires

2
votes

Les autres réponses ne permettent pas de conversions de simples conversions. Comme expliqué dans Cette réponse sur le code de code , vous aurez besoin d'une assistance personnalisée pour créer le format simple que vous êtes. À la recherche.

Il va tourner cela ... xxx

... dans ceci: xxx


0 commentaires