2017-11-17 5 views
0

Ich habe ein ziemlich einfaches REST-API-Projekt mit Spring Boot 1.5.7 und Jackson 2.8.Jackson ignoriert irrtümlich unbekannte Felder standardmäßig

Problem

I Jackson möchte eine Ausnahme beschweren und zu erhöhen, wenn es in der Anfrage ein unbekanntes Feld. Obwohl ich nichts eingerichtet habe, um es zu ignorieren, ignoriert es es einfach und ich weiß nicht warum.

Anfrage:

{ 
    "appId":1, 
    "version":"1.0", 
    "status":true, 
    "locked":false, 
    "field": "it is ignored, but it must not be" 
} 

requet Methode

@PutMapping 
public ResponseEntity<?> updateAppToggle(@RequestBody AppToggleUpdateRequest request) { 
    AppToggle updatedAppToggle = service.update(request); 
    return new ResponseEntity<AppToggleResponse> 
     (AppToggleResponse.fillResponse(updatedAppToggle), HttpStatus.OK); 
    } 

Anfrage Klasse

@Data 
public class AppToggleUpdateRequest { 

    @NotNull 
    @Getter 
    private Long appId; 

    @NotNull 
    @Getter 
    private String version; 

    private Boolean status; 

    private Boolean locked; 
} 

Mein application.prop erties enthält nichts besonderes, nur Datenquellen und ein paar Sachen für die H2 In-Memory-Datenbank.

Ich weiß wirklich nicht, was vor sich geht. Jede Hilfe würde wirklich geschätzt werden.

+0

Im Grunde, das ist komisch, weil die Spezifikation sagt ausdrücklich, dass 'FAIL_ON_UNKNOWN_PROPERTIES' ist standardmäßig aktiviert. Sind Sie sicher, keine von denen: https://howtoprogram.xyz/2017/02/18/ignore-exclude-new-fields-deserializing-jackson/ auf Ihren Code anwenden? –

+0

Wie gesagt, meine Anwendung ist ziemlich einfach (es ist für Lernzwecke) und ich benutze alles aus der Box. Ich könnte versuchen, eine Lösung wie [this] (https://stackoverflow.com/a/22874949/4319922), aber es macht keinen Sinn, einmal, wie Sie sagten, ist das Verhalten, das ich erwarte, standardmäßig eingestellt, obwohl es scheint nicht in meiner Anwendung zu sein. – StatelessDev

Antwort

0

ich meine Bewerbung fixiert die folgende Ergänzung der Datei application.properties:

spring.jackson.deserialization.FAIL_ON_UNKNOWN_PROPERTIES=true 
+1

Dies ist notwendig, da Spring Boot im Interesse der Entspanntheit über das, was akzeptiert wird, und der Strenge, was produziert wird, das Scheitern von unbekannten Eigenschaften deaktiviert: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/# howto-anpassen-the-jackson-objectmapper –

0

Haben Sie versucht:

@JsonIgnoreProperties(ignoreUnknown = true) 
@Data 
public class AppToggleUpdateRequest { .. } 
+0

Ich habe versucht, es auf "falsch" zu setzen, weil ich möchte, dass meine Anwendung nur bekannte Felder akzeptiert, aber auch ohne Erfolg. – StatelessDev

Verwandte Themen