ich eine Klasse mit einem Feld haben:@JsonFormat Deserialisierung nicht
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ", timezone = "PST")
@JsonProperty("myDate")
private Date myDate;
Wenn ich versuche, einen JSON-String in ein Objekt deserialisieren:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setTimeZone(TimeZone.getTimeZone("PST"));
ObjectNode node = objectMapper.createObjectNode();
node.put("myDate", "2016-11-06");
Object pojo = objectMapper.treeToValue(node, SomeClass.class);
Es schlägt fehl, mit dieser Ausnahme:
com.fasterxml.jackson.databind.JsonMappingException: Failed to parse Date value '2016-11-06' (format: "yyyy-MM-dd'T'HH:mm:ss.SSSZ"): Unparseable date: "2016-11-06"
.
.
.
Caused by: java.lang.IllegalArgumentException: Failed to parse Date value '2016-11-06' (format: "yyyy-MM-dd'T'HH:mm:ss.SSSZ"): Unparseable date: "2016-11-06"
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateBasedDeserializer._parseDate(DateDeserializers.java:158)
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:261)
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:245)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:490)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:260)
Sollte die Anmerkung @ JsonFormat nicht nur für die Serialisierung gelten? Zumindest habe ich das verstanden, als ich diese FAQ gelesen habe: http://wiki.fasterxml.com/JacksonFAQDateHandling. Hier kann ich keine JSON-Zeichenfolge in ein Objekt deserialisieren.
Selbst die JsonFormat java docs tut darüber reden während der Deserialisierung verwendet: http://fasterxml.github.io/jackson-annotations/javadoc/2.0.0/com/fasterxml/jackson/annotation/JsonFormat.html
Haben verstehe ich diese Funktion falsch oder bin ich etwas falsch in meinem Code zu tun?
Ja, ich habe mich geirrt. Ich konnte die Saite parsen, als ich "Z" in dem Muster entfernte, das ich benutzte. – shravanp
Falsch. Die Serialisierung ist von dieser Anmerkung nicht betroffen. –