Как изменить формат поля сообщения для ResponseEntity? - PullRequest
2 голосов
/ 03 октября 2019

В моем приложении Spring-Boot мой API возвращает тело ответа, используя org.springframework.http.ResponseEntity

Example:
    {
      "timestamp": "Oct 2, 2019 3:24:32 PM",
      "status": 200,
      "error": "OK",
      "message": "Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool",
      "path": "/a/b/c/d/init"
    }

Мне нужно изменить формат поля сообщения на более короткий формат.

Я пыталсянайти его в Интернете, и я нашел ссылки на другие сторонние библиотеки, а не на весну.

В моем приложении я получил этот компонент конфигурации:

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.text.DateFormat;

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.enable(JsonParser.Feature.STRICT_DUPLICATE_DETECTION);
        objectMapper.setDateFormat(DateFormat.getDateTimeInstance());

        return objectMapper;
    }
}

Есть ли способ отформатироватьполе сообщения?

1 Ответ

2 голосов
/ 03 октября 2019

Вы можете написать собственный сериализатор json в Джексоне и решить, что должно быть сделано с определенным строковым значением, с помощью свойства bean-объекта аннотации с @JsonSerialize(using=SerializerClassName.class)

public class Message{

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

//other properties
}
public class MessageSerializer extends JsonSerializer<String> {

    @Override
    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
        if(value.length() > 70){
            gen.writeString(value.substring(0, 67) + "...");
        }
    }
}
...