Ich schreibe ein Skript, das eine JSON-Datei analysiert und einige Docker-Container-Namen und die Server, auf denen sie laufen, extrahiert. Ich muss dann ein paar andere Dinge in Bash mit den Informationen, die ich bekomme. Ich bin neu in der Verwendung jq
, aber hier ist, was ich bisher bekommen habe.JSON Parsing mit jq if-then-else Probleme
Ich betreibe die folgenden:
cat env.json | jq '[.env.service.config | .[] | {dockerContainerName:.dockerConfig.dockerImageName,servers:[.allocation[].serverName]}]'
Das gibt mir eine Ausgabe von:
[
{
"dockerContainerName": null,
"servers": []
},
{
"dockerContainerName": "my_awesome_container",
"servers": [
"serverX01",
"serverX02"
]
},
...
...
]
Wie Sie aus dem Ergebnis einige der Service-Konfigurationen haben keine dockerConfig.dockerImageName sehen können. Ich muss einschränken, was zurückkommt, um jene herauszufiltern, die kein dockerConfig haben. Ich habe versucht, ein Wenn-Dann-Else zu verwenden, aber es scheint nicht zu funktionieren.
Irgendwelche Ideen da draußen?
Können Sie die komplette 'JSON' zur Verfügung stellen? und liefern Sie genau die Ausgabe, die Sie brauchen? Die aktuellen Informationen sind nicht ausreichend. – Inian