3

私は JSON ファイルを扱っており、それをオブジェクトに変換する必要があります。ここまではすべて簡単に思えますが、日付を解析しようとすると問題が発生しました。

私はこのようなことをしようとしています:

//My JSON file
data={
    "title":"myTitle"
    "releaseDate":"2012-05-28"
}

//Myclass
class Book{
String title
Date date
}

Book book = JSON.parse(data)

そして、私はエラーを受け取ります:

Cannot cast object  with class 'org.codehaus.groovy.grails.web.json.JSONObject' to class 'Book' due to: 
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '2012-05-28' with class 'java.lang.String' to class 'java.util.Date'

なぜこれが起こっているのかはわかっていると思います(明らかに、文字列を日付にキャストすることはできません)が、修正方法がわかりません。

Config.groovyまた、次のように、日付の形式で定義しようとしました。

grails.converters.json.date = 'yyyy-MM-dd'
4

1 に答える 1

3

最近かなり話題になっている話です。最近の GRAILS バージョン (3.x など) には、強力でシンプルなサポートがあります。たとえば、この回答を参照してください。
簡単に言えば、文字列から日付への変換を明確にするために、application.yml または application.groovy に一般的な形式のリストを挿入する必要があります。たとえば、application.groovy では次のようになります。

grails.databinding.dateFormats = ["yyyy-MM-dd'T'hh:mm:ss.S'Z'", 'ddMMyyyy', 'yyyy-MM-dd HH:mm:ss']

このようにして、Date プロパティを持つドメイン Book.groovy がある場合

def book = new Book(JSON.parse(stringJson))

完全に動作します。GRAILS 3.1.6 でテスト済み。

于 2016-11-04T13:13:19.270 に答える