【问题标题】:Spring MVC - JSON - Configuring parsing of Calendar into Java ObjectSpring MVC - JSON - 将日历解析配置为 Java 对象
【发布时间】:2015-01-20 05:15:50
【问题描述】:

您如何配置 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());

    }

我注意到我收到了 ERROR 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"

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

【问题讨论】:

  • ...即使经过几次尝试,我还是无法理解您要说的内容。你的句子没有多大意义。对不起。

标签: java json spring date jackson


【解决方案1】:

查看常见问题解答中的here,了解如何为 Jackson 2.0 执行此操作。

序列化的FAQ示例

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

与此无关,可以编写自己的序列化程序类并使用@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);
        }

    }

}

【讨论】:

  • 使用@JsonFormat 对我来说效果很好。谢谢!我以为只有在序列化为 JSON 时才有注释。
猜你喜欢
  • 2011-04-24
  • 2018-01-09
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多