Ich habe eine JSON-Datei, die wie folgt aussieht (ein grobes Schema):jq: select ohne Elemente aus Array fallen
[{
"custom_variables": [
{
"name": "xxx",
"value": "xxx"
},
{
"name": "xxx",
"value": "xxx"
},
{
"name": "profile_id",
"value": "123"
}
],
// many fields
"xxx": "xxx",
"xxx": "xxx",
"xxx": "xxx"
}]
Ich bin mit jq alle Felder von der obersten Ebene Objekt zu extrahieren. Das Feld custom_variables enthält ein Array von Objekten mit Namen und Wert.
Ich möchte ein bestimmtes Objekt aus custom_variables mit seinem Namen extrahieren.
Also, was ich tue, ist dies:
jq 'map(
{
xxx: .xxx,
xxx: .xxx,
xxx: .xxx,
xxx: .custom_variables | .[] | select(.name == "variable_name")
}
)'
Es ist fast funktioniert; Sie ruft die gewünschte Variable ab, wenn sie existiert, aber wenn dies nicht der Fall ist (oder wenn custom_variables nicht selbst vorhanden ist), wird das gesamte Objekt der obersten Ebene gelöscht. Am Ende bekomme ich weniger Objekte, als ich in das Skript einfüge.
Wie kann ich nur null zurückgeben, wenn ich dieses Feld nicht finde, aber den Rest der Daten behalten?