深いコンバーターを介して JSON に変換したいドメイン クラスのツリーがあります。
import grails.converters.deep.JSON
deepObject as JSON
ツリーのどこかで、いくつかのフィールドに Double.NaN 値があり、JSON パーサーが例外をスローします。
org.apache.commons.lang.UnhandledException: org.codehaus.groovy.grails.web.converters.exceptions.ConverterException: org.codehaus.groovy.grails.web.json.JSONException: JSON does not allow non-finite numbers
その場合はどうすればいいですか?文字列 ('NaN') を返す可能性があります。
JSONObject.testValidity(Object o)メソッドを置き換えてみましたが、これは pojo であるため機能しません。
編集
また、Bootstrap.groovy にマーシャラーを登録しようとしました。
JSON.registerObjectMarshaller(Double) {
return it == Double.NaN ? 'NaN' : it.toString()
}
しかし、それもうまくいきません。