Wie konstruieren json mit JsonBuilder mit Schlüssel mit den Namen der variable und Wert mit seinem Wert?

Wie konstruieren json mit JsonBuilder mit Schlüssel und Wert mit gleichen Namen?

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()

Welche den Fehler erzeugt

groovy.lang.MissingMethodException: No signature of method:
java.lang.Integer.call() ist anwendbar für die argument-Typen:
(java.lang.Integer -) Werte: [12] Mögliche Lösungen: wait (), (),
abs(), wait(long), wait(long, int), (java.lang.Anzahl)

Unter Angabe der Taste hat keine Wirkung. Keine Ahnung, wie diese Arbeit zu machen.

Dank.

Edit:

Will ich den JSON zu werden, wie { userId: 12 }. Auch, warum schreiben Sie den Schlüssel als string nicht funktioniert?

long userId = 12   
def json = new JsonBuilder()
def root = json {
    "userId" userId
}

Dem Beispiel ist nur ein Ausschnitt. Die situation ist, dass ich eine Menge von controller-Aktionen, die mit verschiedenen Variablen bereits. Jetzt bin ich das hinzufügen ein Teil, wo ich versuche, erstellen Sie eine JSON-Zeichenfolge, mit der die verschiedenen Werte der Variablen halten. So ist es nicht sehr praktisch, um änderungen an bestehenden Variablennamen und wenn ich bauen könnten, die den JSON-string mit dem gleichen Namen, es wäre mehr im Einklang. Schreiben accessor-Methoden für die Variablen, die ich wollte ist auch nicht eine elegante Methode. Was ich Tat, derzeit ist der Einsatz von verschiedenen Namensschema wie user_id für userId aber wieder, es ist nicht konsistent mit dem rest von den Konventionen, die ich Folgen. Also ich bin auf der Suche nach einer eleganten Ansatz und der Grund, warum JsonBuilder verhält sich in dieser Weise. Ich habe generell eine gute Meinung über Groovy, aber dieses ist sehr enttäuschend.

Im Fall von JavaScript,

var a = 1
JSON.stringify({a: a})    //gives "{"a":1}"

dies ist das erwartete Ergebnis.

Wenn Sie sagen, der Schlüssel und Wert gleich sind name, möchten Sie 12:12 oder userId:12?
Ich will, dass es userId: 12.
Folgen dem ersten Ansatz aus meiner Antwort, in diesem Fall.

InformationsquelleAutor | 2013-10-07

Schreibe einen Kommentar