JSON-Jackson-ObjectMapper ReadValue - Fehler in Datum konvertieren
Ich sehe die Fehler unten aufgelistet, wenn Sie versuchen zu konvertieren der json-string in ein Objekt. Ich habe nicht den source code für die Daten-Klasse & es ist Teil einer jar-Datei. Gibt es eine Möglichkeit, die ich verwenden könnte Mixins in Verbindung, um dieses Problem?
CODE
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(request, Data.class);
FEHLER
org.codehaus.jackson.Karte.JsonMappingException: Kann nicht bauen
Instanz von javax.xml.datatype.XMLGregorianCalendar von String-Wert
'10:00:00': keine gültige Darstellung (error: Can not parse date
"10:00:00": nicht kompatibel mit der standard-Formulare
("yyyy-MM-dd NICHT'HH:mm:ss.SSSZ", "yyyy-MM-dd NICHT'HH:mm:ss.SSS 'Z'", "EEE,
dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))
JSON-ANFRAGE
"timeSlot":{
"date":"2015-10-21",
"endTime":"10:00:00",
"startTime":"08:00:00",
}
BEARBEITEN
Dieses Problem ist ähnlich diese , aber dies geschieht während der Deserialisierung. Die andere Lösung half in entsprechend serialisieren der Anfrage.
Habe ich eingefügt den sample-code, der nicht unter Arbeitsbedingungen -
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class TestJSONDeserialize {
public static void main(String[] args){
ObjectMapper mapper = new ObjectMapper();
mapper.addMixIn(Data.class, MyMixin.class);
String jsonString = "{\"date\":\"2014-02-10\",\"time\":\"16:15:00\"}";
try {
mapper.readValue(jsonString, Data.class);
} catch (JsonParseException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Daten Klasse (ich kann keine änderungen an dieser Datei)
import javax.xml.datatype.XMLGregorianCalendar;
public class Data {
private XMLGregorianCalendar date;
private XMLGregorianCalendar time;
public XMLGregorianCalendar getDate() {
return date;
}
public void setDate(XMLGregorianCalendar date) {
this.date = date;
}
public XMLGregorianCalendar getTime() {
return time;
}
public void setTime(XMLGregorianCalendar time) {
this.time = time;
}
}
Sehe ich die folgende Fehlermeldung, wenn ich dies ausführen :
com.fasterxml.jackson.databind-Methode.exc.InvalidFormatException: Kann nicht
konstruieren Instanz von javax.xml.datatype.XMLGregorianCalendar aus
String-Wert '16:15:00': keine gültige Darstellung (error: Failed to
parse-Date-Wert '16:15:00': Kann nicht analysiert Datum "16:15:00": nicht
kompatibel mit allen standard-Formen ("yyyy-MM-dd NICHT'HH:mm:ss.SSSZ",
"yyyy-MM-dd NICHT'HH:mm:ss.SSS 'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz",
"yyyy-MM-dd")) [Source: {"Datum":"2014-02-10","Zeit":"16:15:00"};
Zeile: 1, Spalte: 21] (über die Referenz-Kette:
com.comcast.json.test.Daten["Zeit"])
InformationsquelleAutor Punter Vicky | 2015-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen hier. Stick Datumsformatierung auf dem Feld:
InformationsquelleAutor sh0rug0ru
War ich in der Lage dieses zu erhalten getan mit benutzerdefinierten deserializer und Mixins in Verbindung. Folgenden Code -
InformationsquelleAutor Punter Vicky
Bereits beantwortet, in diesem alten post, aber hoffe, dass dies hilfreich sein für jemanden in der Zukunft.
Angabe
DateFormat
imObjectMapper
mein Problem gelöst.InformationsquelleAutor RahulArackal