4

有没有一种体面的方法来反序列化由 JsonBuilder 序列化的来自 JSON 的日期?JsonBuilder 像这样序列化 java.util.Date:

{"hour":"2013-01-07T04:00:00+0000"}

JsonSlurper 将其吸入并将其视为字符串。我真的需要对此做一个简单的日期格式吗?我真的只想从 JsonSluper parseText 中自动生成一个 java.util.Date。

4

3 回答 3

4

也许稍微不那么冗长:

Date.parse("yyyy-MM-dd'T'HH:mm:ssZ", json.hour)
于 2013-01-16T05:07:13.347 回答
1

JsonSlurper 可以根据需要配置不同类型的解析器。

要将日期字符串自动解析为 Date 对象,您可以使用 JsonParserType.INDEX_OVERLAY解析器(如果将解析的地图放入长期缓存中,则必须小心)- https://docs.groovy-lang.org/latest/html /api/groovy/json/JsonSlurper.html

def json = groovy.json.JsonOutput.toJson(["date":new Date()])
println json //  {"date":"2020-11-06T09:27:22+0000"}

def map = new groovy.json.JsonSlurper()
    .setType(groovy.json.JsonParserType.INDEX_OVERLAY)
    .parseText(json)

assert map.date instanceof Date
于 2020-11-06T09:53:28.580 回答
0

在从 JsonSlurper parseText 中获取字符串后可以执行此操作

def jutilDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(dateStr);

希望有更好的方法

于 2013-01-09T18:36:45.823 回答