2017-05-17 1 views
0

Ich habe eine Liste von Objekten mit einem Feld "Beschreibung". Dieses Feld kann riesig sein (+3000 Zeichen), aber ich benutze es in der Vorschau (ich zeige nur die 100 ersten Zeichen).Begrenzen Schreibgröße von String mit Jackson

Gibt es einen Weg in Jackson, um die Größe eines Strings beim Schreiben zu begrenzen? Ich will nur, dass Jackson es auf 100 Zeichen schneidet. (Hier ist keine Bean-Validierung erforderlich).

Für exemple, wenn ich ein Objekt wie dieses:

{ 
    "description" : "bla bla bla bla... + 3000 char" 
} 

Idealerweise möchte ich es wie thie beschnitten werden:

{ 
    "description" : bla bla [max 100 chars] bla..." 
} 

Danke.

Antwort

1

Sie können einen benutzerdefinierten Serializer schreiben, der Text zuschneiden kann, wenn er einen Grenzwert wie unten gezeigt überschreitet.

public class DescriptionSerializer extends JsonSerializer<String> { 

    @Override 
    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { 
     if(value.length()>100){ 
      gen.writeString(value.substring(0, 100)+"..."); 
     } 

    } 

} 

und mit Anmerkungen versehen description Feld dieses kundenspezifische Serializer

public class Bean{ 

    @JsonSerialize(using=DescriptionSerializer.class) 
    private String description 

} 
+0

Hallo, verwenden Vielen Dank für Ihre Antwort. Was ist, wenn ich mein DTO in anderen Fällen verwenden möchte, in denen ich die vollständige Beschreibung benötige? –

+0

Sie können [Jackson Views] (http://www.baeldung.com/jackson-json-view-annotation) verwenden, wie in dieser [Frage] erläutert (http://stackoverflow.com/questions/43978724/jackson) -json-de-serialization-with-views) –

+0

Ja, das macht den Job :-) Danke! –

Verwandte Themen