Groovy: создать массив объектов - PullRequest
0 голосов
/ 04 марта 2019

Учитывая следующий список, как мы можем извлечь путь и метод для создания массива объектов json.

def List = [(proxy.pathsuffix MatchesPath "/{accountbillId}") and (request.verb = "POST"), (proxy.pathsuffix MatchesPath "/{accountbillId}") and (request.verb = "GET"), (proxy.pathsuffix MatchesPath "/") and (request.verb = "GET"), !(request.header.Accept JavaRegex "(text\/xml)(;.*)|(.*;)(text\/xml)(;.*)|text\/xml|(.*;)(text\/xml)|(application\/xml)(;.*)|(.*;)(application\/xml)(;.*)|application\/xml|(.*;)(application\/xml)|(application\/json)(;.*)|(.*;)(application\/json)(;.*)|application\/json|(.*;)(application\/json)"), (!(request.content = "")) and (!(request.content is null)) and !(request.header.Content-Type JavaRegex "(text\/xml)(;.*)|(.*;)(text\/xml)(;.*)|text\/xml|(.*;)(text\/xml)|(application\/xml)(;.*)|(.*;)(application\/xml)(;.*)|application\/xml|(.*;)(application\/xml)|(application\/json)(;.*)|(.*;)(application\/json)(;.*)|application\/json|(.*;)(application\/json)"), (request.verb == "OPTIONS") and (request.header.origin != null)]

Необходимо построить окончательный Json следующим образом:

{
    "paths": [
        {
            "path": "/{accountbillId}",
            "method": "POST"
        },
        {
            "path": "/{accountbillId}",
            "method": "GET"
        },
        {
            "path": "/"
            "method": "GET"
        }
    ]
}

Попробовал это до сих пор, но мог получить только одно или другое:

def sList = List
def pa = /(?<=proxy.pathsuffix MatchesPath ")([^"]+)/
def vb = /(?<=request.verb = ")([^"]+)/
def resultPA = sList.collect({
    def match = (it =~ pa)
    if (match.find()) {
        match.group()
    }
})
def pathparams = resultPA.findAll { it != null }
def resultVB = sList.collect({
    def match = (it =~ vb)
    if (match.find()) {
        match.group()
    }
})
def verbs = resultVB.findAll { it != null }
def jsonBody = [:]
def mm = verbs.collect {[method: it]}
def pp = pathparams.collect {[path: it]}
def pathx = [paths: pp]
    pathx = [paths: mm]
def finalBody = (JsonOutput.prettyPrint(JsonOutput.toJson(pathx)))
println finalBody

Результат до сих пор с кодом выше:

{
    "paths": [
        {
            "method": "POST"
        },
        {
            "method": "GET"
        },
        {
            "method": "GET"
        }
    ]
}

или

{
    "paths": [
        {
            "path": "/{accountbillId}"
        },
        {
            "path": "/{accountbillId}"
        },
        {
            "path": "/"
        }
    ]
}

Любая помощь или руководство высоко ценится.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...