J'ai un fichier json qui contient une chaîne de json dans un objet:
{
"requestType": "POST",
"response": {
"size": 78,
"text": "{\"recordID\":123, \"title\":\"Hello World\", \"content\":\"Lorem ipsum...\"}"
}
}
J'ai besoin d'interpéter le contenu du .response.text
chaîne en json à l'aide de l'interpréteur de ligne de commande json, jq .
Lorsque j'exécute cette commande:
jq '.response.text | @json'
Production: "\"{\\\"recordID\\\":123, \\\"title\\\":\\\"Hello World\\\", \\\"content\\\":\\\"Lorem ipsum...\\\"}\""
Je reçois une chaîne json échappée étrange au lieu de json à laquelle je peux accéder via quelque chose comme ceci: .response.text | @json | .recordID
.
Je me rends compte que le @json
la fonction prendra json et produira une chaîne d'échappement json, donc il doit y avoir une autre façon, mais @text
ne semble rien faire.
Existe-t-il un moyen de convertir une chaîne de json échappé en json réel que je peux analyser avec une commande comme celle-ci: jq '.response.text | @json | .title'
et obtenez cette sortie: "Hello World"
?
Utilisez fromjson
.
Il analyse une chaîne à sa valeur json appropriée. tojson
(et @json
) va dans l'autre sens et prend une valeur json et la convertit en chaîne.
Vous pouvez donc faire ceci:
.response.text | fromjson.title