Как построить JSON с помощью JsonBuilder с ключом и значением с тем же именем?
import groovy.json.JsonBuilder
def userId = 12 // some user id obtained from else where.
def json = new JsonBuilder()
def root = json {
userId userId
}
print json.toString()
Который выдает ошибку
groovy.lang.MissingMethodException: Нет сигнатуры метода: java.lang.Integer.call() применим для типов аргументов: (java.lang.Integer) значения: [12] Возможные решения: wait(), any(), abs(), wait (long), wait (long, int) и (java.lang.Number)
Цитирование ключа не имеет никакого эффекта. Любая идея, как сделать эту работу.
Редактировать:
Я хочу, чтобы JSON был похож на { userId: 12 }
. Кроме того, почему запись ключа как строки не работает?
long userId = 12
def json = new JsonBuilder()
def root = json {
"userId" userId
}
Приведенный пример - просто фрагмент. Ситуация такова, что у меня много действий контроллера, которые уже имеют различные переменные. Теперь я добавляю часть, в которой я пытаюсь создать строку JSON с различными значениями переменных. Поэтому не очень удобно изменять существующие имена переменных, и если бы я мог создать строку JSON с тем же именем, это было бы более согласованным. Написание методов доступа для всех переменных, которые я хотел, также не является элегантным методом. В настоящее время я использовал другую схему именования, такую как user_id
для userId
но, опять же, она не соответствует остальным соглашениям, которым я следую. Поэтому я ищу элегантный подход и причину, по которой JsonBuilder
ведет себя таким образом.
В случае JavaScript,
var a = 1
JSON.stringify({a: a}) // gives "{"a":1}"
что является ожидаемым результатом.