Ich bin ziemlich an Grails-Konverter gewöhnt, bei denen Sie jedes Objekt wie folgt in eine JSON-Darstellung konvertieren können ( http://grails.org/Converters+Reference ).
return foo as JSON
Aber im einfachen Groovy kann ich keinen einfachen Weg finden, dies zu tun ( http://groovy-lang.org/json.html )
JSONObject.fromObject(this)
Leere JSON-Strings zurückgeben ...
Vermisse ich einen offensichtlichen Groovy-Konverter? Oder sollte ich mich für eine Jackson- oder Gson-Bibliothek entscheiden?
Antworten:
Meinst du wie:
import groovy.json.* class Me { String name } def o = new Me( name: 'tim' ) println new JsonBuilder( o ).toPrettyString()
quelle
metaClass.properties
, also wird es nicht vom Erbauer abgeholt: - /def toJsonString(Boolean prettyPrint = false) { Map props = [:] def outObject = Publication.declaredFields.findAll { !it.synthetic && it.name != 'props' }.collectEntries { v -> [ (v.name):this[v.name] ] } outObject << props String json = JsonOutput.toJson(outObject) prettyPrint ? JsonOutput.prettyPrint(json) : json }
new JsonBuilder( this.getClass().declaredFields.findAll { !it.synthetic }.collectEntries { [ (it.name):this[ it.name ] ] } ).toString()
Ich konnte die anderen Antworten nicht in der Evaluierungskonsole in Intellij zum Laufen bringen, also ...
groovy.json.JsonOutput.toJson(myObject)
Das funktioniert ganz gut, aber leider
groovy.json.JsonOutput.prettyString(myObject)
hat bei mir nicht funktioniert.
Um es schön gedruckt zu bekommen, musste ich das tun ...
groovy.json.JsonOutput.prettyPrint(groovy.json.JsonOutput.toJson(myObject))
quelle
Sie können dafür JsonBuilder verwenden .
Beispielcode:
import groovy.json.JsonBuilder class Person { String name String address } def o = new Person( name: 'John Doe', address: 'Texas' ) println new JsonBuilder( o ).toPrettyString()
quelle