Spring Boot Jackson映射不起作用

时间:2016-08-08 13:54:45

标签: java spring-boot jackson

我正在使用fastxml jackson进行json序列化。我已将日期序列化程序写为

public class DateObjectSerializer extends JsonSerializer<Date> {
    public static final String DATE_FORMAT = "dd.MM.yyyy";

    @Override
    public void serialize(Date date, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
        System.out.println("From DateObjectSerializer");
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
        String formattedDate = dateFormat.format(date);
        jgen.writeString(formattedDate);
    }
}

但它没有被调用。然而,其他Jackson Serializers工作正常。

所以我在application.yaml

中添加了以下配置
spring:
  jackson:
    serialization-inclusion: non_null
    date-format: dd.MM.yyyy

但它不起作用。

所以我在SpringBootConfiguration类中添加了这段代码。

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    final MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    final ObjectMapper objectMapper = new ObjectMapper();
    SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false).setDateFormat(dateFormat);
    converter.setObjectMapper(objectMapper);
    converters.add(converter);
    super.configureMessageConverters(converters);
}

现在正确地序列化日期。但是现在有效的JSON等效字符串没有像here那样转换为JSON。

@RestController
public class SampleController {

    @RequestMapping(value = "/jsonInfo", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE)
    public String jsonInfo() {
        String string = "{\"name\": \"foo\"}"
                return string;
    }
}

1 个答案:

答案 0 :(得分:2)

试试这个

key1=(.*)key2=(.*)key3=(.*)