使用杰克逊限制字符串的写入大小



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

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

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

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

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

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

谢谢。

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

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

并批注您的description字段以使用此自定义序列化程序

public class Bean{
   
   @JsonSerialize(using=DescriptionSerializer.class)
   private String description
}

相关内容

  • 没有找到相关文章

最新更新