Groovy 表达式为true时的Gpath

Groovy 表达式为true时的Gpath,groovy,gpath,Groovy,Gpath,从下面的JSON中,我试图编写一个Gpath,当“type”字段等于ride_state时,它只返回“state”字段(即,我只需要两个“open”状态) 我不熟悉Groovy和Gpath,到目前为止还没有找到一种方法来实现这一点,有人能帮我吗?使用有效的json,可以按如下方式完成: def jsonString = """ [{ "type": "day", "data": { "id": "7a46a975-5474-4278-a56f-4deadd9a27

从下面的JSON中,我试图编写一个Gpath,当“type”字段等于ride_state时,它只返回“state”字段(即,我只需要两个“open”状态)


我不熟悉Groovy和Gpath,到目前为止还没有找到一种方法来实现这一点,有人能帮我吗?

使用有效的json,可以按如下方式完成:

def jsonString = """
[{
    "type": "day",
    "data": {
        "id": "7a46a975-5474-4278-a56f-4deadd9a276d",
        "state": "closed"
    }
}, {
    "type": "ride_state",
    "data": {
        "id": "13f3b625-b39e-4875-b29c-0173712b3c87",
        "state": "open"
    }
}, {
    "type": "ride_state",
    "data": {
        "id": "b52b5081-e1df-42da-ba76-027c63205f8e",
        "state": "open"
    }
}]
"""

assert new groovy.json.JsonSlurper()
                      .parseText( jsonString )
                      .findResults {it.type == 'ride_state' ? it.data.state : null} == 
                      ['open', 'open']

请添加您迄今为止尝试过的内容;即使不起作用,它也会显示出实际的效果,这会使编写解决方案更容易。这不是一个有效的json。对不起,原始json要大得多,所以我删掉了大部分内容,忘记了右括号
def jsonString = """
[{
    "type": "day",
    "data": {
        "id": "7a46a975-5474-4278-a56f-4deadd9a276d",
        "state": "closed"
    }
}, {
    "type": "ride_state",
    "data": {
        "id": "13f3b625-b39e-4875-b29c-0173712b3c87",
        "state": "open"
    }
}, {
    "type": "ride_state",
    "data": {
        "id": "b52b5081-e1df-42da-ba76-027c63205f8e",
        "state": "open"
    }
}]
"""

assert new groovy.json.JsonSlurper()
                      .parseText( jsonString )
                      .findResults {it.type == 'ride_state' ? it.data.state : null} == 
                      ['open', 'open']