Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jackson限制字符串的写入大小_Java_Json_Jackson_Fasterxml - Fatal编程技术网

Java 使用jackson限制字符串的写入大小

Java 使用jackson限制字符串的写入大小,java,json,jackson,fasterxml,Java,Json,Jackson,Fasterxml,我有一个带有字段“description”的对象列表。这个字段可能很大(+3000个字符),但我在预览中使用它(我只显示100个firsts字符) jackson有没有办法限制写入时字符串的大小?我只想让杰克逊把它剪成100个字符。(此处不需要bean验证) 例如,如果我有这样一个对象: { "description" : "bla bla bla bla... + 3000 char" } 理想情况下,我希望它像这样裁剪: { "description" : bla bla

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

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

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

{
    "description" : "bla bla bla bla... + 3000 char"
}
理想情况下,我希望它像这样裁剪:

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

你好,谢谢你的回答。如果我想在其他需要完整描述的情况下使用我的DTO,该怎么办?您可以使用本文中解释的是,这将完成工作:-)谢谢!
public class Bean{
   
   @JsonSerialize(using=DescriptionSerializer.class)
   private String description

}