Groovy: json 根据子值获取id的值
Groovy: json get value of id based on child value
我有一个 json 如下:
[
{
"id":6619137,
"oid":"6fykq37gm60x",
"key":{
"key":"6619137"
},
"name":"Prod",
"planKey":{
"key":"PDP"
},
"environments":[
{
"id":6225923,
"key":{
"key":"6619137-6225923"
},
"name":"Production",
"deploymentProjectId":6619137,
}
],
},
{
"id":6619138,
"oid":"6fykq37gm60y",
"key":{
"key":"6619138"
},
"name":"QA",
"planKey":{
"key":"QDP"
},
"environments":[
{
"id":6225924,
"key":{
"key":"6619138-6225924"
},
"name":"QA",
"deploymentProjectId":6619138,
}
],
},
]
我可以使用下面的代码根据名称值提取 id 和 environments.id 的值。 projectID 将给出 6619137,environmentID 将给出 6225923
def e = json.planKey.find{it.name=='Prod'}
def projectID = e.id
def environmentID = e.environments[0].id
但是,当我尝试根据 plankey.key 值(例如 PDP 或 QDP)提取 id 和 environments.id 的值时,使用与上面相同的格式 returns 我java.lang.NullPointerException: Cannot get property 'id' on null object at Script60.run(Script60.groovy:52)
的错误
def e = json.planKey.find{it.planKey=='{key=PDP}'}
def projectID = e.id
def environmentID = e.environments[0].id
有什么方法可以获取带有 plankey 键值的 projectID 吗?
将您的 JSON 对象视为具有多个级别的 key/value 地图。没有这样的项目
json.find{it.planKey=='{key=PDP}'}
但是,您可以找到任何级别的值,如下所示:
def e = json.find{it.planKey.key == "PDP"}
如果您的结构中 planKey 可能不存在,或者它并不总是 key
,那会有点不同,但从您的问题来看,这里的情况似乎并非如此。
编辑:根据下面的评论更正语法。
我有一个 json 如下:
[
{
"id":6619137,
"oid":"6fykq37gm60x",
"key":{
"key":"6619137"
},
"name":"Prod",
"planKey":{
"key":"PDP"
},
"environments":[
{
"id":6225923,
"key":{
"key":"6619137-6225923"
},
"name":"Production",
"deploymentProjectId":6619137,
}
],
},
{
"id":6619138,
"oid":"6fykq37gm60y",
"key":{
"key":"6619138"
},
"name":"QA",
"planKey":{
"key":"QDP"
},
"environments":[
{
"id":6225924,
"key":{
"key":"6619138-6225924"
},
"name":"QA",
"deploymentProjectId":6619138,
}
],
},
]
我可以使用下面的代码根据名称值提取 id 和 environments.id 的值。 projectID 将给出 6619137,environmentID 将给出 6225923
def e = json.planKey.find{it.name=='Prod'}
def projectID = e.id
def environmentID = e.environments[0].id
但是,当我尝试根据 plankey.key 值(例如 PDP 或 QDP)提取 id 和 environments.id 的值时,使用与上面相同的格式 returns 我java.lang.NullPointerException: Cannot get property 'id' on null object at Script60.run(Script60.groovy:52)
def e = json.planKey.find{it.planKey=='{key=PDP}'}
def projectID = e.id
def environmentID = e.environments[0].id
有什么方法可以获取带有 plankey 键值的 projectID 吗?
将您的 JSON 对象视为具有多个级别的 key/value 地图。没有这样的项目
json.find{it.planKey=='{key=PDP}'}
但是,您可以找到任何级别的值,如下所示:
def e = json.find{it.planKey.key == "PDP"}
如果您的结构中 planKey 可能不存在,或者它并不总是 key
,那会有点不同,但从您的问题来看,这里的情况似乎并非如此。
编辑:根据下面的评论更正语法。