【发布时间】:2021-06-21 04:42:25
【问题描述】:
我正在将 java 对象转换为 json 对象。但是 OffsetDatetime 也被转换为 json 格式。是否可以将时间对象保留为 OffsetDatetime 时间戳本身。
Java 对象
{
"start_date": "2022-01-01T13:45:00+01:00",
"origin": {
"type": "AIRPORT",
"search_display_name": "Malmo, Sweden (MMX-Sturup)",
"search_string": "MMX",
"city": "Malmo"
}
}
转成json后得到如下
{
"start_date": {
"offset": {
"total_seconds": 0,
"id": "Z",
"rules": {
"fixed_offset": true,
"transition_rules": [
],
"transitions": [
]
}
},
"day_of_month": 1,
"day_of_week": "SATURDAY",
"day_of_year": 1,
"month": "JANUARY",
"month_value": 1,
"year": 2022,
"hour": 12,
"minute": 45,
"nano": 0,
"second": 0
},
"origin": {
"search_display_name": "Malmo, Sweden (MMX-Sturup)",
"search_string": "MMX",
"city": "Malmo"
}
}
是否可以像这样“2022-01-01T13:45:00+01:00”保持offsetDateTime
Java 对象将使用此方法转换为 json objectMapper.valueToTree(response)
对象映射器配置如下
@Bean("objectMapperJavaTime")
public ObjectMapper objectMapperJavaTime() {
return JacksonObjectMapperFactory.createMapperWithDefaultConfigurations()
.registerModule(new JavaTimeModule())
.enable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
}
public class JacksonObjectMapperFactory {
public static ObjectMapper createMapperWithDefaultConfigurations(){
return new Jackson2ObjectMapperBuilder()
.featuresToDisable(WRITE_DATES_AS_TIMESTAMPS)
.failOnUnknownProperties(false)
.serializationInclusion(NON_NULL)
.propertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
.modules(new JodaModule())
.build();
}
}
【问题讨论】:
-
是的,这很容易实现,但是如何将对象转换为 JSON?请编辑问题以显示您的相关代码。它可能就像重写函数一样简单,只返回一个字符串而不是整个序列化对象。
-
@sorfiend 感谢您的调查。我已经编辑了问题
-
@sorfiend 尝试禁用此功能 WRITE_DATES_AS_TIMESTAMPS。但它仍然无法正常工作。
-
最初没有拾取 bean。禁用此功能后现已解决。谢谢@sorifiend
标签: java spring-boot jackson