i mehrere json-Dateien im folgende Format als Umwelt-Dateien haben und es gegen einen Endpunkt zu testen,aktualisiert einen Wert in einer Liste von JSON-Objekten (einen bekannten Schlüssel entspricht) jq mit
{
"id": "test1123",
"name": "my testing",
"values": [
{
"enabled": true,
"key": "URL",
"value": "http://localhost:3000/",
"type": "text"
},
{
"enabled": true,
"key": "User1Token",
"value": "",
"type": "text"
},
{
"enabled": true,
"key": "User2Token",
"value": "",
"type": "text"
},
{
"enabled": true,
"key": "IdentityURL",
"value": "",
"type": "text"
},
{
"enabled": true,
"key": "AdminToken",
"value": "",
"type": "text"
}
],
"timestamp": 1511892974802,
"_postman_variable_scope": "environment",
"_postman_exported_at": "2017-11-28T19:38:23.389Z",
"_postman_exported_using": "Postman/5.3.0"
}
Ich wollte um den Endpunkt in diesem json zu aktualisieren, bevor ich meinen Test ausführe. Der Endpunkt Wert muss auf Wertattribut von Werten hinzugefügt werden, Objekt, in dem der Schlüssel „URL“
so in dem obigen Fall, soll ich den Endpunkt in den ersten Indexwerten Array aktualisieren,
{
"enabled": true,
"key": "URL",
"value": "http://10.20.200.1/",
"type": "text"
}
wo http://10.20.200.1/ ist mein Endpunkt.
Der aktuelle Code, den ich zu verwenden ist versucht:
jq '.values | map(if .key == "URL" then . + {"value":"10.20.13.28/";} else . end)'
... aber dies führt zu einem Syntaxfehler. Kann mir jemand vorschlagen, wie man jq benutzt, um den Wert korrekt zu aktualisieren?
Hinweis: Die Schlüssel-URL ist nicht immer der erste Index der Werte.
Können Sie den 'jq' Code anzeigen, den Sie ausprobiert haben? –
jq '.values | map (wenn .key == "URL" dann. + {"value": "http://10.20.13.28/"} else. end) '. Problem mit diesem ist die Ausgabe enthält nicht volle json, da ich nur Werte Wert betrachte – Annette