来自 Spring MVC 中 LocalDateTime(java 8) 的 Json 字符串
Posted
技术标签:
【中文标题】来自 Spring MVC 中 LocalDateTime(java 8) 的 Json 字符串【英文标题】:Json string from LocalDateTime(java 8) in Spring MVC 【发布时间】:2016-03-31 13:40:03 【问题描述】:在 Spring MVC 框架中 LocalDateTime(Java 8) 格式化遇到问题
我的VO就像在代码下
在 mysql 中 w_date 字段为 DATETIME 并重新编码为 "2015-12-25 23:18:22"
public class HistoryBoard
@JsonFormat(pattern="yyyy-MM-dd")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
private LocalDateTime w_date;
public LocalDateTime getW_date()
return w_date;
public HistoryBoard setW_date(String w_date)
DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
this.w_date = LocalDateTime.parse(w_date, sdf);
return this;
添加maven依赖
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.5.3</version>
</dependency>
并在字段值w_date中添加@JsonFormat(pattern="yyyy-MM-dd")
但还是 json 得到 Object 之类的
"w_date":"dayOfMonth":25,"dayOfWeek":"FRIDAY","month":"DECEMBER","year":2015,"dayOfYear":359,"monthValue":12,"hour":23,"minute":18,"second":22,"nano":0,"chronology":"id":"ISO","calendarType":"iso8601"
json页面控制器代码
@RequestMapping(value = "/listJson.do")
public @ResponseBody Object listJson(Map<String, Object> commandMap, ModelMap model) throws Exception
List<HistoryBoard> list = boardService.selectBoardList(commandMap);
return list;
【问题讨论】:
您的预期行为是什么? @SazzadHissainKhan 在 mySQL DB DATETIME 字段中显示类似“2015-12-25 12:10”的 json 你不想要第二个和纳米部分吗? @SazzadHissainKhan 不想要第二个,但 Json 显示了对象类型 【参考方案1】:here 回答了类似的问题。您可能需要将@JsonSerialize(using = LocalDateTimeSerializer.class)
添加到您的字段中。
您还可以创建一个自定义序列化程序,如下所示:
public class CustomLocalDateTimeSerializer extends JsonSerializer<LocalDateTime>
@Override
public void serialize(LocalDateTime dateTime, JsonGenerator generator, SerializerProvider sp)
throws IOException, JsonProcessingException
String formattedDateTime = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
generator.writeString( formattedDateTime);
并在您的 LocalDateTime 字段中使用该自定义序列化程序:
@JsonSerialize(using = CustomLocalDateTimeSerializer.class)
private LocalDateTime w_date;
【讨论】:
如果你使用的是Joda时间,使用:import com.fasterxml.jackson.datatype.joda.ser.LocalDateTimeSerializer; gradle:编译“com.fasterxml.jackson.datatype:jackson-datatype-joda:2.9.1”以上是关于来自 Spring MVC 中 LocalDateTime(java 8) 的 Json 字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 RestTemplate 在 Spring MVC 应用程序中访问来自(来自 Spring RESTful 服务)的巨大 JSON
DispatcherServlet 的 Spring MVC 中来自 REST 端点的 404 错误