java - Spring MVC - JSON - 配置将日历解析为 Java 对象

标签 java json spring date jackson

您如何配置 Jackson 解析为日历的方式?无论如何设置格式?

我正在使用

@RequestMapping(value = "/assign", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public Form5398Obj arriveTrip(@PathVariable String siteId,
                @RequestBody ErrorMsg anError) throws Exception {

        System.out.println(anError.toString());

    }

我注意到我收到错误 400,因为 ErrorMsg 中的日历字段未正确转换。如果我从 POST 中删除它,它会正常工作。

我通过搜索发现有一些标准表格对我有用 ""yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm: ss zzz", "yyyy-MM-dd"

有没有明确告诉它以某种方式解析?

最佳答案

here在常见问题解答中了解如何为 Jackson 2.0 做到这一点。

序列化常见问题解答中的示例:

public class DateStuff {
  @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd,HH:00", timezone="CET")
  public Date creationTime;
}

独立于此,可以编写自己的 Serializer 类并使用 @JsonDeSerialize(using MyDeSerializer.class) 注释属性

public class MyJsonDateDeserializer extends JsonDeserializer<Date>
{
    @Override
    public Date deserialize(JsonParser jsonparser,
            DeserializationContext deserializationcontext) throws IOException, JsonProcessingException {

        SimpleDateFormat f = new SimpleDateFormat("dd.MM.yyyy"); // german date
        String d = jsonparser.getText();
        try {
            return f.parse(d);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

    }

}

关于java - Spring MVC - JSON - 配置将日历解析为 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27071871/

相关文章:

php - 如何选择多个表将mysql转换为json?

java - 安装 JDK 9 后无法启动 Spring Tool Suite

java - GWT PopupPanel 未正确显示动画图像

javascript - 如何使用 Javascript 动态替换 JSON 对象键中的空格?

java - 设计困境。什么是最好的设计?

android - 通过 AsyncHttpClient 将 JSON 作为 POST 请求发送到服务器

java - Spring JTA 事务的 Log4J 配置

java - Spring Web 单元测试 - 如何使数据库达到已知状态?

java - jOOQ:使用 maven 生成代码

java - JTable 单元格中的多个 JCheckBoxes