2017-05-17 11 views
0

"description"필드가있는 객체 목록이 있습니다. 이 필드는 거대한 (+3000 자) 수 있지만 미리보기에서 사용합니다 (나는 100 자의 첫 번째 문자 만 표시합니다).jackson에서 String의 쓰기 크기 제한

쓰기에 문자열의 크기를 제한하는 방법이 있습니까? 잭슨이 100 자까지 자르기를 바랄뿐입니다. (여기서 bean 검증은 필요하지 않습니다.) exemple 들어

, 나는이 같은 객체가있는 경우 :

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

    } 

} 

그리고이 사용자 정의 직렬

public class Bean{ 

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

} 
+0

안녕하세요을 사용하도록 description 필드에 주석이 는 답변 주셔서 감사합니다. 전체 설명이 필요한 경우 DTO를 사용하려면 어떻게해야합니까? –

+0

이 [질문] (http://stackoverflow.com/questions/43978724/jackson)에서 설명한대로 [Jackson Views] (http://www.baeldung.com/jackson-json-view-annotation)를 사용할 수 있습니다. -json-de-serialization-with-views) –

+0

네, 그 일을 할 것입니다 :-) 고마워요! –