2012-03-04 11 views
4

オブジェクトをJSONとして深くまたは浅く変換するかどうかを簡単に指定する方法はありますか?私はあなたが以下のようなものを指定することにより、Config.groovyファイルにgrails.converters.JSONユーティリティを設定することができます知っている:Grailsで深いまたは浅いJSONシリアライゼーションを選択

grails.converters.json.default.deep = true 

を私は特定のオブジェクトを変換するときに、私は深い変換しません。

私はまた、誰かがJSON.use(「深い」)を使用してお勧めしますことを見たが、私は次のエラーを取得する:

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のエラーの可能性がありように思えますが、これは」doesnの私はちょうどConfig.groovyのプレーンな技術を使っています。混乱の種...

何か助けが素晴らしいだろう!

+1

私は同じ問題を抱えています。 joda-timeプラグインのjoda-timeコンバーターが 'JSON.use(" deep ")の後に呼び出されるようには見えません。彼らはあなたがそれらを手動で登録する場合です。 JSON.use( "deep")JodaConverters.registerJsonAndXmlMarshallers()私は何かをより良くするかどうかを知らせます。 – gogstad

答えて

6

私の解決策は、深い/浅いjson世代に依存しないことでした。私はマップを作成し、要素を挿入し、それをシリアライズしました。おそらくベストプラクティスではないが、それは仕事を終わらせる。

+0

同じことをした、より良い方法でなければなりません。 – Derek

関連する問題