2016-09-20 2 views
3

Ich habe eine einfache POJO:Prevent automatisches String in Integer Umwandlung in Jackson

public class ADate { 
    private Integer day; 
    private Integer month; 
    private Integer year; 
    ... // getters/setters/constructor 
} 

das folgende JSON-Dokument wird korrekt in ADate deserialisiert:

{ 
    "day":"10", 
    "month":"2", 
    "year":"1972" 
} 

Jackson den String in Integer konvertiert automatisch.

Gibt es eine Möglichkeit, diese automatische Konvertierung zu vermeiden und Jackson zu fehlschlagen, wenn die Integer-Werte als String definiert sind.

+1

Ich bin ein bisschen verwirrt, wollen Sie die ganze Zahl als String oder nicht? In jedem Fall gibt es dafür eine Konfiguration im Mapper: 'ObjectMapper mapper = new ObjectMapper(); mapper.configure (JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS, true); ' Oder falsch, wenn Sie es nicht als String wünschen – Franjavi

+0

Die Einstellung scheint keinen Unterschied zu machen. Grundsätzlich möchte ich nicht, dass das System ein Dokument mit Strings anstelle von Zahlen akzeptiert. – Luciano

+0

Behebt Ihr Problem? Im Blick auf das gleiche Verhalten und kann keine Konfiguration finden, um dies zu deaktivieren .. – quit

Antwort

1

Ich habe den interessanten Code auf Jackson github issues gefunden. Ich habe es ein wenig geändert und das ist was ich bekam: