我正在编辑一些JSON文件,我将它们反序列化为java对象,编辑,然后用Gson将它们写回JSON格式。
但是我的所有日期时间对象都变成了层次对象,而不是我需要的字符串表示。
之前(偏移日期时间):
"date": "2000-04-26T10:10:00Z"
在反序列化、编辑和再次反序列化之后:
"date":{
"dateTime":{
"date":{
"year":2000,
"month":1,
"day":1
},
"time":{
"hour":0,
"minute":0,
"second":0,
"nano":0
}
},
"offset":{
"totalSeconds":0
}
}
接下来是我的原始序列化代码:
Gson gson = new GsonBuilder()
.serializeNulls()
.create();
String json = gson.toJson(myObject);
我已经尝试了所有的解决方案在这个问题:GSON -日期格式但它们都没有改变什么,我以为是同一个问题,但现在我觉得我的问题不一样了,java有很大的变化,自从2011年这个问题被问到。
下面是我尝试添加到GsonBuilder中的代码行的具体示例:
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
...
.setDateFormat(DateFormat.LONG)
...
.setDateFormat(DateFormat.FULL, DateFormat.FULL)
还有很多,没什么区别.
如何让Gson将不同的Java日期对象序列化为字符串表示?
1条答案
按热度按时间z31licg01#
在阅读了关于这个问题的评论后,指出Gson上没有对此的本机支持,我决定寻找其他库。
我使用
com.fasterxml.jackson.databind.ObjectMapper.java
轻松地实现了目标