有没有一种体面的方法来反序列化由 JsonBuilder 序列化的来自 JSON 的日期?JsonBuilder 像这样序列化 java.util.Date:
{"hour":"2013-01-07T04:00:00+0000"}
JsonSlurper 将其吸入并将其视为字符串。我真的需要对此做一个简单的日期格式吗?我真的只想从 JsonSluper parseText 中自动生成一个 java.util.Date。
也许稍微不那么冗长:
Date.parse("yyyy-MM-dd'T'HH:mm:ssZ", json.hour)
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
在从 JsonSlurper parseText 中获取字符串后可以执行此操作
def jutilDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(dateStr);
希望有更好的方法