2017-05-04 3 views
0

Ich habe eine komplizierte Klasse in meinem REST API:Kann ich eine Eigenschaft mit Jackson @ JsonView serialisieren?

class Complicated { 
    String foo 
    Integer bar 
    Instant baz 
    ... 
    // lots more 
} 

ich auch eine andere Klasse, die eine Sammlung von Complicated enthält:

class HasComplications { 
    String description 

    List<Complicated> complications 
} 

Als ich serialisiert meine HasComplications (mit Spring MVC), I nur wollen einen Ausschnitt jedes Complicated:

{ 
    description: "hello world", 
    complications: [ { 
     foo: "foo1", 
     bar: 42 
    ] } 
} 

Wenn ich direkt einSerialisierung bin, kann ich @JsonView verwenden Jackson zu erzählen, die von Eigenschaften auf serialisiert:

class Complicated { 
    @JsonView(Views.Snippet) String foo 
    @JsonView(Views.Snippet) Integer bar 
    Instant baz 
    ... 
    // lots more 
} 

Allerdings, wenn ich serialisiert Complicated transitively im complications Eigenschaft, Jackson alle Eigenschaften serialisiert. Gibt es eine Möglichkeit für mich, es zu deklarieren: "Verwenden Sie diese Ansicht, wenn Sie diese Eigenschaft serialisieren"?

class HasComplications { 
    String description 

    @UseJsonView(Views.Snippet) 
    List<Complicated> complications 
} 

Antwort

1

Derzeit gibt es keine solche Funktionalität.

Eine Sache, die Sie tun können, ist @JsonIgnoreProperties auf Eigenschaft zu verwenden. Aber ich denke, das würde nur für POJO-Werte und nicht für den Inhalt von List s oder Map s funktionieren, so dass Ihnen hier nicht hilft. Es könnte sinnvoll sein, ein Problem zu beheben, damit dies für strukturierte Typen funktioniert.

+0

Es sieht so aus, als ob vor einiger Zeit eine ähnliche Funktion angefordert wurde, und ich habe es kommentiert. – chrylis

Verwandte Themen