Я хотел бы знать быстрый способ вставить JSON в JSON.
$ cat source.json
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"environment": [
{
"name": "SERVICE_MANIFEST",
"value": ""
},
{
"name": "SERVICE_PORT",
"value": "4321"
}
]
}
]
}
SERVICE_MANIFEST - это содержимое другого файла json
$ cat service_manifest.json
{
"connections": {
"port": "1234"
},
"name": "foo"
}
Я пытаюсь сделать это с помощью команды jq
cat service_manifest.json |jq --arg SERVICE_MANIFEST - < source.json
Но, похоже, это не работает
Есть идеи?Окончательным результатом должен быть действительный файл json
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"environment": [
{
"name": "SERVICE_MANIFEST",
"value": {
"connections": {
"port": "1234"
},
"name": "foo"
}
},
...
]
}
],
...
}
Updates.
Спасибо, вот команда, которую я запускаю из вашего примера.
$ jq--slurpfile sm service_manifest.json '.containerDefinitions []. environment [] | = (select (.name == "SERVICE_MANIFEST"). value = $ sm)' source.json
НоРезультатом является массив, а не список.
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"environment": [
{
"name": "SERVICE_MANIFEST",
"value": [
{
"connections": {
"port": "1234"
},
"name": "foo"
}
]
},
{
"name": "SERVICE_PORT",
"value": "4321"
}
]
}
]
}