Как я могу создать двухэлементный объект с JsonBuilder Groovy?

В моем коде Groovy объявлены две переменные:

results это массив карт. Он содержит список строк, возвращаемых из запроса SQL.

overall это карта. Он представляет одну строку отдельного запроса SQL.

Я хочу объединить эти две переменные в одну и вывести все это в формате JSON. В конце я хочу, чтобы это выглядело примерно так:

{"data":[{"results":"array"}],"overall":{"overall":"map"}}

Вот код, который я пытаюсь использовать, но он не работает:

def json = new groovy.json.JsonBuilder()
def finalJSON = json {
    data results
    overall overall
}

return json.toString()

Но это не работает... оно выдает следующее исключение:

groovy.lang.MissingPropertyException: No such property: call for class: groovy.sql.GroovyRowResult

Я могу проверить, что обе переменные results а также overall иметь правильные данные в них. Я думаю, я просто не понимаю синтаксис для JsonBuilder.

2 ответа

Решение

Найдите возможные решения ниже:

import groovy.json.*

def r = [[l:1],[l:2]]
def o = [over:1,all:2]

def json = new JsonBuilder()

json {
    data r
    overall o
}
println json.toPrettyString()

def m = [data: r, overall: o]

println JsonOutput.prettyPrint(JsonOutput.toJson(m))

Хорошо, я понял это. Groovy выглядит глупо в том смысле, что вы, очевидно, не можете использовать то же имя переменной для значения, что и назначаемый вами ключ. Таким образом, настоящая проблема была с строкой, которая гласила:

overall overall

Я изменил эту переменную на overallData и все начало работать.

Другие вопросы по тегам