【发布时间】:2018-09-21 06:07:19
【问题描述】:
我有以下 JSON 文件:
{
"data":[
{
"id":"34c4s5f7-175f-480a-adff-d8d0bef4e8c4",
"name":"test",
"organizationId":"7er337a-714c-4043-90b1-6a4e7we82d87",
"isProduction":false,
"type":"test",
"clientId":"6d4720062eab494c45ewedaa78de1"
},
{
"id":"4856a92-9e46-4430-aac7-6ed8674569f",
"name":"dev",
"organizationId":"7er337a-714c-4043-90b1-6a4e7we82d87",
"isProduction":false,
"type":"sandbox",
"clientId":"bs34dea7749494daa8deert908bcd9"
}
],
"total":2
}
我的要求是找到键名为dev的记录,然后打印id键。
我遇到过
awk -F: '$1~/"name"/{l=$2} l~/dev/ && $1 ~ /id/ {sub(/,/,"",$2);print $2}'
但这会打印匹配键的后续行中出现的键值。我需要找到匹配键之前的值。
【问题讨论】:
-
你为什么使用
awk进行JSON解析?使用jq- 轻量级 JSON 解析器 -
这将是 jenkins 构建过程的一部分。我们可以在 jenkins 中实现 jq 吗?
-
是的,您可以在您的节点中安装
jq -
github.com/arakelian/java-jq 是否与此处相关?