JSON Serialisierungsdatum in einem benutzerdefinierten Format (Konnte Instanz von java.util.Date nicht aus String-Wert erstellen)
could not read JSON: Can not construct instance of java.util.Date from String
value '2012-07-21 12:11:12': not a valid representation("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"))
vorbei json-Anforderung an REST-controller-Methode in eine POJO-Klasse.der Benutzer soll eingeben, nur unten ein datetime-format andere Weise werfen sollte Nachricht.warum DateSerializer nicht aufrufen?
add(@Valid @RequestBody User user)
{
}
json:
{
"name":"ssss",
"created_date": "2012-07-21 12:11:12"
}
pojo-Klasse variable
@JsonSerialize(using=DateSerializer.class)
@Column
@NotNull(message="Please enter a date")
@Temporal(value=TemporalType.TIMESTAMP)
private Date created_date;
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
logger.info("serialize:"+value);
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
logger.info("DateSerializer formatter:"+formatter.format(value));
jgen.writeString(formatter.format(value));
}
InformationsquelleAutor der Frage user739115 | 2013-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe das gleiche problem, also Schreibe ich ein benutzerdefiniertes Datum der Deserialisierung
mit
@JsonDeserialize(using=CustomerDateAndTimeDeserialize.class)
InformationsquelleAutor der Antwort aselidy
Anmerkungen created_date Feld mit dem JsonFormat Anmerkung, um das Ausgabeformat anzugeben.
InformationsquelleAutor der Antwort Splaktar
Doch ein anderer Weg ist, um eine benutzerdefinierte Datum-Objekt kümmert sich um seine eigenen Serialisierung.
Während ich glaube nicht wirklich, dass die Erweiterung einfache Objekte wie
Date
Long
usw. ist eine gute Praxis, in diesem speziellen Fall macht es den code leicht lesbar, hat einen einzigen Punkt, wo das format ist festgelegt und wird eher mehr als weniger kompatibel mit normalenDate
Objekt.InformationsquelleAutor der Antwort Dariusz
JSON
string zu Datum, dieser Vorgang wird alsdeserialization
nichtserialization
.Binden eine
JSON
string zu Datum, erstellen Sie eine benutzerdefinierte Datum der Deserialisierung, kommentierencreated_date
oder Ihren setter mit@JsonDeserialize(using=YourCustomDateDeserializer.class)
wo Sie haben, um die Methode zu implementieren
public Date deserialize(...)
zu sagen, Jackson gewusst wie: konvertieren einer Zeichenfolge in ein Datum.Genießen.
InformationsquelleAutor der Antwort khoi nguyen