使用jackson限制String的写入大小

时间:2017-05-17 07:30:11

标签: java json jackson fasterxml

我有一个带有字段“description”的对象列表。这个字段可能很大(+3000个字符)但我在预览中使用它(我只显示100个第一个字符)。

杰克逊有没有办法在写入时限制字符串的大小?我只希望杰克逊把它裁剪成100个字符。 (此处不需要bean验证)。

例如,如果我有这样的对象:

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

理想情况下,我希望它像你一样裁剪:

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

谢谢。

1 个答案:

答案 0 :(得分:4)

您可以编写自定义序列化程序,如果文本超出限制,可以裁剪文本,如下所示。

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

}