![](/img/trans.png)
[英]HttpMessageNotReadableException: Could not read JSON: Failed to parse Date value 'I'
[英]Failed to parse “Date” from JSON
我在REST响应中具有以下JSON字符串:
"09:41:50 CET"
对于对应的POJO映射器类,此字段具有Date类型。 因此,我尝试了Jackson和GSON将JSON映射到Java Object,但是都失败,并显示以下消息:
GSON: java.text.ParseException: Failed to parse date ["09:41:50 CET"]: Invalid number: 09:4
Jackson: InvalidFormatException: Cannot deserialize value of type `java.util.Date` from
String "09:41:50 CET": not a valid representation
可悲的是,我无法在POJO类中将类型修改为字符串或其他任何类型,因为我从mvn依赖项获得了这些POJO类。
试试这个:
public static void main(String[] args) throws ParseException {
String jsonStr = "{ \"date\" : \"09:41:50 CET\" }";
Gson gson = new GsonBuilder().setDateFormat("HH:mm:ss").create();
JsonElement element = gson.fromJson (jsonStr, JsonElement.class);
OnlyDate date =gson.fromJson(element, new TypeToken<OnlyDate>(){}.getType());
System.out.println(date.getDate());
}
我的DTO示例是:
public class OnlyDate implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@SerializedName("date")
private Date date ;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
您必须指定gson元素的dateFormat
不确定要使用哪种类型的支架,但是如果您使用的是弹簧支架,则可以通过实现自定义Converter来实现,请查看https://www.baeldung.com/spring-mvc-custom-data-binder上的示例。
从Jackson v2.0开始,您可以直接在Object成员上使用@JsonFormat注释;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss", timezone="CET")
private Date date;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.