Convertir des .json pour .csv en ruby
Je veux convertir .fichier json en .fichier csv à l'aide de ruby. Plaît m'aider à le faire.
Proposons également un outil pour atteindre cet objectif.
- Regardez ceci: stackoverflow.com/questions/5357711/csv-to-json-ruby-script
- Avez-vous un exemple pour les données JSON? JSON en lui-même peut être multidimensionnelle, et csv est en 2 dimensions.
Vous devez vous connecter pour publier un commentaire.
Essayer quelque chose comme cela:
D'écrire dans un fichier...
Je pense que le easies moyen de convertir le JSON, CSV en ruby, c'est à l'aide de json2csv ruby gem.
PS: je suis peut-être biaisé comme je suis l'auteur de ce.
json2csv dépôt github
L'exécution de la commande
Fichier D'Entrée
Dans ce cas particulier, il va les convertir en json suivants:
Sortie
errors' for main:Object from (irb):3 from /usr/local/opt/rbenv/versions/2.1.5/bin/irb:11:in
<main>'Basé sur @Alex réponse mais l'ajout de csv en-têtes et exemple de test.
Edit:
Cette fonctionnalité décrite ci-dessous est maintenant disponible comme une gem. Après l'installation avec
gem install json_converter
, le fragment de code suivant peut être utilisé pour générer un fichier CSV à partir d'une chaîne JSON valide ou d'un objet:Réponse Originale À Cette Question:
Si vos données JSON est relativement simple (pas d'imbrication ou de tableaux), Alex réponse est probablement la façon la plus propre de la gestion de ce problème.
Toutefois, si vous ne besoin de prendre des tableaux et des objets imbriqués en compte, j'ai tenté de port un version web d'un tel convertisseur de ruby. Il peut être trouvé ici. Les méthodes pour gérer la réelle restructuration de données sont
array_from
etflatten
.La
array_from
méthode tente d'identifier ce qu'est une "ligne" de données ressemble à un jeu de données. Il n'est pas parfait, et vous pouvez ajuster cette partie pour les différents ensembles de données.La
flatten
méthode récursive itère sur l'objet JSON(s), et génère un objet qui représente les en-têtes et des valeurs. Si un objet est imbriqué, l'en-tête de sa colonne seront préfixés avec sa clé parent(s), délimité par le/
caractère.S'il y a des
null
valeurs à l'origine, JSON, vous aurez besoin de les transformer en quelque chose d'autre quenil
avant de tenter la conversion, vous aurez généralement à la fin avec l'inégale des lignes si vous n'avez pas. Lenils_to_strings
méthode de poignées:Voici un bref exemple de la façon dont ce serait utilisée:
Et enfin, voici un exemple d'entrée/sortie:
D'entrée:
De sortie:
Du code Ruby pour les convertir au format csv, json.
Poignées de tableaux en les convertissant en chaînes entre guillemets doubles.
C'est gérer les en-têtes & imbriqués json.