SpringMVC-JSON-将日历解析为Java对象
如何配置Jackson解析日历的方式?是否仍有设置格式的方法 我正在使用SpringMVC-JSON-将日历解析为Java对象,java,json,spring,date,jackson,Java,Json,Spring,Date,Jackson,如何配置Jackson解析日历的方式?是否仍有设置格式的方法 我正在使用 @RequestMapping(value = "/assign", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public Form5398Obj arriveTrip(@PathVariable String siteId, @Reques
@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中的日历字段未正确转换。如果我把它从柱子上取下来,它就能正常工作
在一次搜索中,我注意到有一些标准表单对我有效
“yyyy-MM-dd'T'HH:MM:ss.SSSZ”,“yyyy-MM-dd'T'HH:MM:ss.SSS'Z'”,“EEE,dd-MM-yyyy-HH:MM:ss-zzz”,“yyyy-MM-dd”
是否有明确的方法告诉它以某种方式进行解析?查看常见问题解答,了解Jackson 2.0的解析方法
有关序列化的常见问题解答中的示例:
独立于此,您可以编写自己的序列化程序类,并使用@JsonDeSerialize(使用MyDeSerializer.class)
公共类MyJsonDateDeserializer扩展了JsonDeserializer
{
@凌驾
公共日期反序列化(JsonParser JsonParser,
反序列化上下文(DeserializationContext)引发IOException、JsonProcessingException{
SimpleDataFormat f=新的SimpleDataFormat(“dd.MM.yyyy”);//德语日期
字符串d=jsonparser.getText();
试一试{
返回f.parse(d);
}捕获(解析异常){
抛出新的运行时异常(e);
}
}
}
…即使尝试了几次,我还是不明白你想说什么。你的句子没有多大意义。对不起,使用@JsonFormat
对我来说非常有效。谢谢!我以为只有在序列化为JSON时才使用注释。
public class DateStuff {
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd,HH:00", timezone="CET")
public Date creationTime;
}
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);
}
}
}