Utilisation jq d'analyser une Chaîne JSON
Je vais essayer d'obtenir jq
d'analyser une structure JSON comme:
{
"a" : 1,
"b" : 2,
"c" : "{\"id\":\"9ee ...\",\"parent\":\"abc...\"}\n"
}
Qui est un élément dans le JSON est une chaîne de caractères avec échappé json.
Donc, j'ai quelque chose le long des lignes de
$ jq [.c] myFile.json | jq [.id]
Mais qui se bloque avec jq: error: Cannot index string with string
C'est parce que la sortie de .c est une chaîne de caractères, pas plus JSON.
Comment puis-je obtenir jq analyser cette chaîne?
Ma première solution est d'utiliser sed pour remplacer tous l'évasion caractères (\":\"
, \",\"
et \"
), mais c'est salissant, je suppose il y a un chemin construit dans jq
pour ce faire?
Merci!
edit:
Aussi, l'jq version disponible ici est la suivante:
$ jq --version
jq version 1.3
Je suppose que je pourrais le mettre à jour si nécessaire.
- Cette question est également utile si vous êtes à la recherche pour: "Comment ne pas encoder chaîne json à l'aide de jq?"
Vous devez vous connecter pour publier un commentaire.
jq a la
fromjson
builtin pour cela:fromjson
a été ajouté dans la version 1.4.fromjson
fonctionnalité n'est pas disponible. En d'autres termes, même si cette réponse est intéressante, mais elle ne répond pas à la question.Vous pouvez utiliser la sortie brute (-r) qui permettra de ne pas encoder les caractères:
ADDENDUM: l'avantage est qu'il fonctionne dans jq 1.3 et jusqu'; en effet, il faut travailler dans chaque version de jq qui a l'option-r.