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

see: groovy - convert object json string


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -