Как я могу создать двухэлементный объект с 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
и все начало работать.