json-如何将json获取到数组

json-如何将json获取到数组,json,jq,Json,Jq,我运行了一个aws命令,结果如下: [root@webserver-02 test]# aws ec2 describe-volumes --volume-ids vol-0be41aaca50a1d4d2 --profile donald 2> /dev/null| jq -r '.Volumes[]|{"Tags":(.Tags | map({(.key//.Key): (.value//.Value)}) | add), VolumeId:.VolumeId,SnapshotId:.

我运行了一个
aws
命令,结果如下:

[root@webserver-02 test]# aws ec2 describe-volumes --volume-ids vol-0be41aaca50a1d4d2 --profile donald 2> /dev/null|
jq -r '.Volumes[]|{"Tags":(.Tags | map({(.key//.Key): (.value//.Value)}) | add), VolumeId:.VolumeId,SnapshotId:.SnapshotId, Volumesize:.Size, CreateTime:.CreateTime, State:.State,"Instances": [.Attachments[0].InstanceId] }'
{
  "Tags": {
    "Name": "4d2",
    "c": "c",
    "a": "a",
    "b": "b"
  },
  "VolumeId": "vol-0be41aaca50a1d4d2",
  "SnapshotId": "snap-0be43cb27ae60c978",
  "Volumesize": 8,
  "CreateTime": "2018-09-20T02:24:21.067Z",
  "State": "in-use",
  "InstanceId": "i-016c1d0448d6917f6"
}
结果如下:

[root@webserver-02 test]# aws ec2 describe-volumes --volume-ids vol-0be41aaca50a1d4d2 --profile donald 2> /dev/null|
jq -r '.Volumes[]|{"Tags":(.Tags | map({(.key//.Key): (.value//.Value)}) | add), VolumeId:.VolumeId,SnapshotId:.SnapshotId, Volumesize:.Size, CreateTime:.CreateTime, State:.State,"Instances": [.Attachments[0].InstanceId] }'
{
  "Tags": {
    "Name": "4d2",
    "c": "c",
    "a": "a",
    "b": "b"
  },
  "VolumeId": "vol-0be41aaca50a1d4d2",
  "SnapshotId": "snap-0be43cb27ae60c978",
  "Volumesize": 8,
  "CreateTime": "2018-09-20T02:24:21.067Z",
  "State": "in-use",
  "InstanceId": "i-016c1d0448d6917f6"
}
嗯。我想显示InstanceIdjson,如下所示:

{
    "Tags": {
        "Name": "4d2",
        "c": "c",
        "a": "a",
        "b": "b"
    },
    "VolumeId": "vol-0be41aaca50a1d4d2",
    "SnapshotId": "snap-0be43cb27ae60c978",
    "Volumesize": 8,
    "CreateTime": "2018-09-20T02:24:21.067Z",
    "State": "in-use",
    "Instances": [{
        "InstanceId": "i-016c1d0448d6917f6"
    }]
}

我正在
bash
shell中使用
jq

您可以使用这个jq过滤器:

jq '.+{"Instances":[{InstanceId}]}|del(.InstanceId)' file
这将使用
InstanceId
的值将对象
实例添加到当前JSON数据中
然后删除对象根上的
InstanceId