Mój problem jest dość prosta: Mam następującą prostą klasę:Błąd deserializacji Jackson obsługi
public class Foo {
private int id = -1;
public void setId(int _id){ this.id = _id; }
public int getId(){ return this.id; }
}
I staram się przetwarzać następujące JSON:
{
"id": "blah"
}
Oczywiście, nie jest to problem tutaj ("blah" nie może być przetwarzany na int)
Dawniej Jackson wyrzuca coś podobnego do org.codehaus.jackson.map.JsonMappingException: Nie można skonstruować wystąpienia java.lang.Integer z String value "blah": niepoprawna wartość Integer
Zgadzam się z tym, ale chciałbym zarejestrować coś gdzieś, co pozwoli zignorować tego typu błędy mapowania. Próbowałem z zarejestrowanym programem DeserializationProblemHandler (zobacz here), ale wydaje się, że działa on tylko na nieznanych właściwościach, a nie na problemach z deserializacją.
Masz jakieś wskazówki na ten temat?
Dlaczego chcesz, aby zignorować ten błąd? Zwrócę kod HTTP '400' do każdego klienta, który spróbuje' PUT' mnie reprezentację zasobu w ten sposób :) –
Używam Jackson z Spring MVC i sprawdzania fasoli. Problem polega na tym, że Jackson narzeka na problemy z deserializacją, zanim dotrę do warstwy wiosennej mvc .. więc nie mogę wysłać do mojego klienta błędów w spójny sposób. –
Również ja (dla jednego) często używam Jacksona do zrobienia czytelnego zrzutu obiektu do dziennika. Możliwość odnotowania problemów z serializacją i poruszania się jest bardzo pomocna. –