在Grails中选择深JSON序列化或浅JSON序列化

在Grails中选择深JSON序列化或浅JSON序列化,json,grails,Json,Grails,有没有一种方法可以轻松地指定是以深度还是浅层的方式将对象转换为JSON?我知道您可以通过指定以下内容在Config.groovy文件中配置grails.converters.JSON实用程序: grails.converters.json.default.deep = true 但当我转换某些对象时,我不想进行深度转换 我还看到有人建议使用JSON.use(“deep”),但我得到以下错误: Error 2012-03-04 00:39:13,673 ["http-bio-8080"-exec

有没有一种方法可以轻松地指定是以深度还是浅层的方式将对象转换为JSON?我知道您可以通过指定以下内容在Config.groovy文件中配置grails.converters.JSON实用程序:

grails.converters.json.default.deep = true
但当我转换某些对象时,我不想进行深度转换

我还看到有人建议使用JSON.use(“deep”),但我得到以下错误:

Error 2012-03-04 00:39:13,673 ["http-bio-8080"-exec-1] ERROR errors.GrailsExceptionResolver  - IllegalAccessException occurred when processing request: [GET] /Quaffic/home/json
Class org.codehaus.groovy.grails.web.converters.marshaller.json.GenericJavaBeanMarshaller can not access a member of class org.joda.time.tz.DateTimeZoneBuilder$PrecalculatedZone with modifiers "public". Stacktrace follows:
Message: Class org.codehaus.groovy.grails.web.converters.marshaller.json.GenericJavaBeanMarshaller can not access a member of class org.joda.time.tz.DateTimeZoneBuilder$PrecalculatedZone with modifiers "public"
   Line | Method
->> 198 | value          in grails.converters.JSON
这似乎可能是一个joda.time错误,但如果我只使用普通的Config.groovy技术,就不会发生这种情况。有点困惑


任何帮助都会很好

我的解决方案是不依赖于深/浅json生成。我创建了一个映射,插入了元素,并将其序列化。也许不是最好的做法,但它能完成任务

我也有同样的问题。joda时间插件中的joda时间转换器似乎不是在
JSON.use(“deep”)
之后调用的。但是,如果您手动注册它们,它们将被禁用。JSON.use(“deep”)JodaConverters.registerJsonAndXmlMarshallers()如果我能找到更好的方法,我会让你知道的。如果我能找到更好的方法,那一定是更好的方法。