ObjectMapper 正在转换为错误的日期时间
Posted
技术标签:
【中文标题】ObjectMapper 正在转换为错误的日期时间【英文标题】:ObjectMapper is converting to wrong datetime 【发布时间】:2015-07-30 22:50:58 【问题描述】:我将日期传递为"scoreTimestamp": "2015-04-15T10:00:00.000Z",
并希望将此 json 作为字符串保存在数据库中,因此使用方法
ObjectMapper objMapper = new ObjectMapper();
String ratingData = objMapper.writeValueAsString(scoreTimestamp);
我希望日期为:“scoreTimestamp”:“2015-04-15 10:00”,其中 objectMapper 将其转换为:
"scoreTimestamp" :
"year" : 2015,
"dayOfMonth" : 15,
"dayOfWeek" : 3,
"era" : 1,
"dayOfYear" : 105,
"monthOfYear" : 4,
"weekyear" : 2015,
"yearOfEra" : 2015,
"yearOfCentury" : 15,
"weekOfWeekyear" : 16,
"centuryOfEra" : 20,
"millisOfSecond" : 0,
"millisOfDay" : 36000000,
"secondOfMinute" : 0,
"secondOfDay" : 36000,
"minuteOfHour" : 0,
"minuteOfDay" : 600,
"hourOfDay" : 10,
"zone" :
"fixed" : true,
"id" : "UTC"
,
有人可以帮帮我吗?
【问题讨论】:
请看文章***.com/questions/41876037/…中提到的答案 【参考方案1】:从Jackson v2.0开始,可以直接在字段上使用@JsonFormat注解:
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone="GMT")
private Date scoreTimestamp;
或设为默认
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm a z");
objMapper.setDateFormat(df);
【讨论】:
它不工作..它仍然相同 "scoreTimestamp": "year": 2015, "dayOfMonth": 15, "dayOfWeek": 3, "era": 1, "dayOfYear": 105 ,“millisOfSecond”:0,“millisOfDay”:36000000,“secondOfMinute”:0,“secondOfDay”:36000,“minuteOfHour”:0,“minuteOfDay”:600,“hourOfDay”:10,“monthOfYear”:4,“ weekyear”:2015,“yearOfEra”:2015,“weekOfWeekyear”:16,“yearOfCentury”:15,......等 也不适合我。我在要序列化的对象内的Map
中有DateTime
对象。以上是关于ObjectMapper 正在转换为错误的日期时间的主要内容,如果未能解决你的问题,请参考以下文章
Swift:如何将带有 Alamofilre 或 SwiftyJSON 的 JSON 字符串转换为 ObjectMapper?