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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
userId
, wenn Sie das JSON zu schauen, wie{userId:12}
als
{12:12}
ist der einfachste Fall:dann
def
aususerId
um die erste Verhalten. 🙂als
UPDATE
Lokalen Variablen können auch verwendet werden, als Karte, Schlüssel (das ist standardmäßig String), beim Bau der JSON.
Ich glaube nicht, dass es ein Fehler ist. Mit map-Darstellung statt. Siehe mein update. @kadaj
Ja, ich hatte die Lösung gefunden, unabhängig. Aber danke für deine Mühe. Ich akzeptiere dies als eine richtige Antwort.
InformationsquelleAutor dmahapatro
InformationsquelleAutor moskiteau
War ich in der Lage, einen gewünschten output mit einem anderen Parameter zu
JsonBuilder
'scall()
Methode. d.h., statt der übergabe einer Schließung, übergeben Sie in einer Karte.Verwenden
def call(Map m)
stattdef call(Closure c)
.InformationsquelleAutor