我有一个JSON输出如下:
{
"example": {
"sub-example": [
{
"name": "123-345",
"tag" : 100
},
{
"name": "234-456",
"tag" : 100
},
{
"name": "4a7-a07a5",
"tag" : 100
}
]
}
}
我想提取三个“name”字段的值并将其存储在三个变量中。
我尝试cat json_file | jq '.["example.sub-example.name"]'
提取“名称”字段的值,但这不起作用。
有谁能告诉我如何使用jq(或其他方法)来实现这个目标?
答案 0 :(得分:36)
如果您只想提取name
字段,那么您要查找的命令是jq '.example."sub-example" | .[] | .name'
。如果要将名称保留在数组中,请将整个jq
表达式包装在方括号中。
答案 1 :(得分:13)
在jq 1.3中,您可以使用过滤器:
.example["sub-example"] | .[] | .name
或更紧凑:
.example["sub-example"][].name
这些当然也适用于更高版本的jq。
答案 2 :(得分:1)
已经有几年了,最近我不得不自己做这件事,以为我应该在这里发布另一种方式。
您还可以使用 <dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>com.googleusercontent.apps.433638145101-40qg2d9uiq4v5t*********</string>
<string>twitterkit-mmjB8lbQe3wsBhx*********></string>
</array>
</dict>
提取特定字段。例如
map()