ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用Spring MVC和Jackson将日期作为JSON传递

2019-10-02 17:04:51  阅读:167  来源: 互联网

标签:java spring json spring-mvc jackson


我有一个java.util.Date字段的类,我希望从客户端传递给Spring控制器.每当我发出请求时,控制器都返回HTTP 415.我已尝试添加自定义序列化程序,如我能够找到的许多其他问题中所见.自定义序列化程序的工作原理是,我的控制器检索资源以自定义格式检索它们,但控制器不会确认JSON.如果我完全删除日期,控制器工作,所以我知道问题是在该字段.

理想情况下,我希望以默认的长表示形式接收它们,但我无法让控制器接受任何一种格式.

调节器

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<String> addEvent(ModelMap model, @RequestBody Event event)
{
    eventService.saveEvent(event);
    return new ResponseEntity<String>(HttpStatus.CREATED);
}

要序列化的类(省略了getter和setter,尽管我也在那里尝试了注释.

public class Event implements Serializable
{

    private static final long serialVersionUID = -7231993649826586076L;

    private int eventID;

    private int eventTypeID;

    @JsonSerialize(using = DateSerializer.class)
    private Date date;

串行

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");

@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
        throws IOException, JsonProcessingException {

    String formattedDate = dateFormat.format(date);

    gen.writeString(formattedDate);
}

我的GET控制器检索到的JSON(当我能让它工作时我会更精确)

{"eventID":1,"eventTypeID":2,"date":"02-01-2014"}

解决方法:

你有一个序列化器,但没有解串器,所以它只能单向工作……

你还需要:

 @JsonDeserialize(using = DateDeserializer.class)

(使用相同日期格式的DateDeserializer).

为什么两者都没有单一界面对我来说是个谜:-)

标签:java,spring,json,spring-mvc,jackson
来源: https://codeday.me/bug/20191002/1843647.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有