当前位置: 首页 > 知识库问答 >
问题:

Spring Boot Jackson映射不起作用

黄飞翮
2023-03-14

我使用fasterxml 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序列化程序运行良好。

spring:
  jackson:
    serialization-inclusion: non_null
    date-format: dd.MM.yyyy
@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等效字符串并没有像这里提到的那样转换为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个答案

端木夕
2023-03-14

试试这个

import com.fasterxml.jackson.databind.ObjectMapper;

:

@Autowired
private ObjectMapper objectMapper;

@RestController
public class SampleController {

    @RequestMapping(value = "/jsonInfo", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE)
    public JsonNode jsonInfo()  throws JsonProcessingException, IOException {
        String string = "{\"name\": \"foo\"}"
                return objectMapper.readTree(string);
    }
}
 类似资料:
  • 问题内容: 我正在尝试为各个字段使用不同的分析器设置ElasticSearch索引。但是,我似乎找不到一种设置特定于字段的分析器的方法。这是我创建(测试)索引的方法: 如果我正确阅读了文档,则应创建类型为“ tweet”的索引“ twitter”,并且应通过雪球词根分析器分析“ message”字段的内容。为了对此进行测试,我尝试了以下查询: 如果我没记错的话,那应该会受到打击,因为战斗是战斗的源

  • 我已经定义了对象HomeContentDTO和SubscriberUpsertDTO的映射 下面是这两个对象的映射配置 HomeContentDTO中的所有映射值都没有复制到SubscriberUpsertDTO。有人知道原因吗?

  • 在代码中使用XSLT 2.0的字符映射功能时,我遇到了以下错误。 名称空间中的元素“样式表”http://www.w3.org/1999/XSL/Transform'命名空间中的子元素'character map'无效'http://www.w3.org/1999/XSL/Transform“是的 这是我的XSLT声明 请提供有关如何在XSLT中使用字符映射的帮助。

  • 当我访问localhost:8080/home-我得到: 当我访问localhost:8080/或localhost:8080/index时,看起来一切正常。 为什么一条路行得通,而另一条行不通? 还有一件事让我困惑:localhost:8080/homepage。html-返回我的主视图。 所以我的项目在这里:https://github.com/IRus/jMusic 我的web.xml se

  • 这是我的HelloController.java文件 这是我的第一个.jsp文件 请谁能帮我找到这个错误。运行时出错... servlet mvc-dispatcher的messageservlet.init()引发异常 说明服务器遇到内部错误,导致它无法完成此请求。 异常 根本原因 注意根本原因的完整堆栈跟踪可在Apache Tomcat/7.0.65日志中获得。

  • 我也在遵循Spark1.3文档。https://spark.apache.org/docs/latest/sql-programming-guide.html#推断-the-schema-using-reflection有一个解决方案吗? 下面是我的测试代码。