json - Grails - JSONBuilder - Spec toPrettyString() returns stackoverflow -
i'm making unit test needs return json. build i'm using toprettystring()
method jsonbuilder.
this class spec:
class lugar { string sigla string nombre coordenada coordenada string tostring(){ "${sigla}" } string tojson() { new jsonbuilder( ).toprettystring() } static constraints = { nombre blank: false , nullable: false } }
the spec run this:
@testfor(lugar) class lugarspec extends specification { void "tojson not empty"() { when: lugar lugar = new lugar(sigla: "bue", nombre:"buenos aires") string aux = lugar.tojson(); then: ! aux.dump().empty } }
but result is:
<error type="java.lang.stackoverflowerror">java.lang.stackoverflowerror @ org.springsource.loaded.ri.reflectiveinterceptor.jlrmethodinvoke(reflectiveinterceptor.java:1270) @ groovy.lang.metabeanproperty.getproperty(metabeanproperty.java:60) @ groovy.lang.propertyvalue.getvalue(propertyvalue.java:40) @ groovy.json.jsonoutput.writeobject(jsonoutput.java:287) @ groovy.json.jsonoutput.writemap(jsonoutput.java:421) @ groovy.json.jsonoutput.writeobject(jsonoutput.java:291) @ groovy.json.jsonoutput.writearray(jsonoutput.java:326) @ groovy.json.jsonoutput.writeobject(jsonoutput.java:283) @ groovy.json.jsonoutput.writemap(jsonoutput.java:421) @ groovy.json.jsonoutput.writeobject(jsonoutput.java:291) @ groovy.json.jsonoutput.writearray(jsonoutput.java:326) @ groovy.json.jsonoutput.writeobject(jsonoutput.java:283) @ groovy.json.jsonoutput.writemap(jsonoutput.java:421) @ groovy.json.jsonoutput.writeobject(jsonoutput.java:291)
and continues repeating until end.
i tried test tojson on main , results fine:
static void main(string[] args) { lugar lugar = new lugar(sigla: "bue", nombre:"buenos aires") string aux = lugar.tojson(); println aux.dump() }
the results were:
{ "sigla": "bue", "constraints": { "nombre": { "blank": false, "nullable": false } }, "nombre": "buenos aires" }
i wouldn't make object responsible formatting it's contents. first, might @ @tostring annotation, allows specify fields include in result.
http://docs.groovy-lang.org/latest/html/gapi/groovy/transform/tostring.html
second, remove tojson method, , let default json converter handle it. println new jsonbuilder( object ).toprettystring()
Comments
Post a Comment