环境 :
- 微型 机 : 3.7.3
- Java : 开放 式 JDK 11.0.16
- 外观 : 3.0.13
My Controller 是 用 Groovy 实现 的 , 如下 所 示 :
@Controller("/")
@Slf4j
class Controller1 {
@Get(uri="/test-localdatetime", produces = MediaType.APPLICATION_JSON)
HttpResponse<String> testLocalDateTime() {
LocalDateTime now = LocalDateTime.now()
def map = [
status: "SSUCCESS",
time: now
]
return HttpResponse.ok(map)
}
}
中 的 每 一 个
当 我 呼叫 它 时 , 它 会 传回 :
{"status":"SSUCCESS","time":[2022,11,2,8,24,13,948454300]}
格式
如果 我 想 让 它 返回 一 个 如下 所 示 的 美化 JSON , 我 可以 添加 以下 代码
String json = new JsonBuilder(map).toPrettyString()
return HttpResponse.ok(json)
格式
而 回应 会 变成 ( 仍然 不 是 我 想 要 的 ) :
{
"status": "SSUCCESS",
"time": {
"month": "NOVEMBER",
"second": 29,
"hour": 8,
"nano": 944749300,
"year": 2022,
"dayOfMonth": 2,
"minute": 44,
"monthValue": 11,
"dayOfWeek": "WEDNESDAY",
"chronology": {
"calendarType": "iso8601",
"id": "ISO"
},
"dayOfYear": 306
}
}
格式
但 我 想要 的 想法 回应 是 以下 格式 :
{
"status":"SSUCCESS",
"time":"2022-11-02 08:24:13"
}
格式
所以 , 我 想 知道 是否 有 一 种 简单 的 方法 , 通过 添加 一些 配置 或 注解 , 而 不 改变 初始 代码 , 达到 上述 想法 格式 ?
2条答案
按热度按时间0g0grzrc1#
您需要在应用程序中自己配置Jackson序列化。yml
顺便说一下,我强烈建议使用
java.time.Instant
而不是java.time.LocalDateTime
。此外,我会将控制器的返回类型更改为返回
Map
而不是String
,这样框架就可以关注对Map
的序列化,因为返回的是Map而不是字符串。wvt8vs2t2#
当您只在一个位置使用日期/时间,或需要在不同位置使用不同格式时,您可以:
返回DTO,您可以在其中按注解设置格式
示例DTO类
控制器方法:
继续使用Map,但手动转换时间值
控制器变更: