Comment puis-je convertir mon JSON, CSV à l'aide de jq?
J'ai de la suite de données JSON:
{"id":"111","case":"Y","custom":{"speech invoked":"no","input method":"hard","session ID":"420"}}
Comment puis-je convertir au format CSV à l'aide de jq donc mon résultat ressemble à ceci?
id,case,session Id,speech invoked,input method
111,Y,420,no,hard
J'ai essayé le suivant, mais il ne fonctionne pas:
{(.id),(.case),(.custom."session Id"),(.custom."speech invoked"),(.custom."input method")}
Si possible perl ou shell solution est apprécié.
OriginalL'auteur user2711819 | 2014-08-28
Vous devez vous connecter pour publier un commentaire.
À l'aide de Perl et de ses JSON module:
Assurez-vous. Juste tordre les deux dernières lignes.
Ce n'utilise pas
jq
comme la question qui se pose.Avez-vous lu la dernière ligne de la question?
être fait avec
jq
.OriginalL'auteur choroba
À l'aide de perl n'était pas une bonne solution pour moi, mais après un peu d'essais et d'erreur, j'ai réalisé que vous pouvez faire avec juste
jq
à l'aide de lajoin()
de l'opérateur.D'abord faire un tableau de la sortie dont vous avez besoin, puis rejoindre les éléments d'un tableau à l'aide de virgules.
Profiter. 🙂
.custom."session ID"
de sorte que les gens peuvent voir lajoin()
sans défilement.Merci Joe , Il serait utile à beaucoup d'autres .
OriginalL'auteur Joe Harris
Bâtiment sur Joe Harris répondre, vous pouvez utiliser le @csv filtre de façon à ce que les chaînes sont correctement cité et s'échappa lorsque nécessaire :
C'est mieux que la jointure mais produit toujours des guillemets autour des valeurs.
OriginalL'auteur Olivier Aubert
À l'aide de jq, vous pouvez utiliser ce filtre:
Il suffit de noter que l'écrit de cette manière, la "coutume" propriétés seront toujours écrit en fin de compte, peu importe dans quel ordre les propriétés sont dans.
OriginalL'auteur Jeff Mercado
Ici est une autre solution. Si
data.json
contient les données de l'échantillon puisproduira
OriginalL'auteur jq170727