用杰克逊限制字符串的写入大小
Limit write size of String with jackson
我有一个包含字段 "description" 的对象列表。这个字段可能很大(+3000 个字符)但我在预览中使用它(我只显示 100 个第一个字符)。
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);
}
}
并注释您的 description
字段以使用此自定义序列化程序
public class Bean{
@JsonSerialize(using=DescriptionSerializer.class)
private String description
}
我有一个包含字段 "description" 的对象列表。这个字段可能很大(+3000 个字符)但我在预览中使用它(我只显示 100 个第一个字符)。
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);
}
}
并注释您的 description
字段以使用此自定义序列化程序
public class Bean{
@JsonSerialize(using=DescriptionSerializer.class)
private String description
}