2017-05-17 39 views
0

我有一個字段爲「description」的對象列表。這個字段可以是巨大的(+3000字符),但我在預覽中使用它(我只顯示100首字符)。用jackson限制字符串的寫入大小

jackson有沒有辦法在寫入時限制字符串的大小?我只希望傑克森將它裁剪爲100個字符。 (這裏不需要bean驗證)。

對於爲例,如果我有這樣的對象:

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

理想的情況下,我希望它像thie裁剪:

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

謝謝。

回答

1

如果超出限制,您可以編寫一個自定義序列化程序,該程序可以裁剪文本,如下所示。

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)+"..."); 
     } 

    } 

} 

和標註你的description領域使用這種自定義序列

public class Bean{ 

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

} 
+0

您好, 謝謝您的回答。 如果我想在其他需要完整描述的情況下使用我的DTO,該怎麼辦? –

+0

你可以使用[Jackson Views](http://www.baeldung.com/jackson-json-view-annotation),這個[question](http://stackoverflow.com/questions/43978724/jackson -json-de-serialization-with-views) –

+0

是的,這將完成這項工作:-) 謝謝! –

相關問題