我正在尝试使用 jq 解析以下 json 文件。我想返回该数据的子集。
{
"imageDetails": [
{
"imageSizeInBytes": 2066961,
"imageDigest": "sha256:ff089cca12407adce49e70771a32c2fd48d53d8d3fb735cee430037e6b27c535123",
"imageTags": [
"test",
"latest"
],
"registryId": "98654010662132",
"repositoryName": "testrepository",
"imagePushedAt": 1520462286
},
{
"imageSizeInBytes": 2066961,
"imageDigest": "sha256:c30974de3423250382f5b33be01103c11de73459ceaedd789dff9b461532eb2dd55",
"imageTags": [
"test3"
],
"registryId": "98654010662132",
"repositoryName": "testrepository",
"imagePushedAt": 1520462305
},
{
"imageSizeInBytes": 2066961,
"imageDigest": "sha256:05048eb6cc559e953e6c98afa0e71fd836c37a34563531487af2b5d1c9430570ff9",
"imageTags": [
"mytest1",
"mytest2",
"mytest3"
],
"registryId": "98654010662132",
"repositoryName": "testrepository",
"imagePushedAt": 1520459886
},
{
"imageSizeInBytes": 2066961,
"imageDigest": "sha256:bf23ada8a14d1c70c476b4f39b9b849fd5191d8fc419312b3d1b8f59aa182b050e6",
"imageTags": [
"test3-latest"
],
"registryId": "98654010662132",
"repositoryName": "testrepository",
"imagePushedAt": 1520462305
},
{
"imageSizeInBytes": 2066961,
"imageDigest": "sha256:a040f335556e783930905d0b7bd9f55f1400a2778e39983c3d1e3cc41643c090ee0",
"imageTags": [
"test2"
],
"registryId": "98654010662132",
"repositoryName": "testrepository",
"imagePushedAt": 1520462304
}
]
}
具体来说,我想搜索数组中的项目为"mytest1"的"图像标签"。返回的输出应该是字典块。喜欢这个:
{
"imageSizeInBytes": 2066961,
"imageDigest": "sha256:05048eb6cc559e953e6c98afa0e71fd836c37a34563531487af2b5d1c9430570ff9",
"imageTags": [
"mytest1",
"mytest2",
"mytest3"
],
"registryId": "98654010662132",
"repositoryName": "testrepository",
"imagePushedAt": 1520459886
}
任何协助将不胜感激。
查询简单公式的关键是 any/2
:
.imageDetails[] | select(any(.imageTags[]; . == "mytest1"))