【发布时间】:2018-10-10 09:14:18
【问题描述】:
我想知道一种将 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"
}
},
...
]
}
],
...
}
更新。
谢谢,这是我从您的示例中运行的命令。
$ 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"
}
]
}
]
}
【问题讨论】:
-
替换
...并提供实际的 JSON 内容。
标签: json amazon-web-services jq amazon-elastic-beanstalk