【问题标题】:Unable to implement the custom JSON serializer with Jackson and Spring Boot无法使用 Jackson 和 Spring Boot 实现自定义 JSON 序列化程序
【发布时间】:2015-03-27 07:28:27
【问题描述】:

我只是无法弄清楚以下代码有什么问题。它不会将日期字段输出为字符串。我用谷歌搜索,发现人们正在做同样的事情,他们得到了想要的输出。我是否缺少某种额外的配置?请帮忙。

package hello;

import java.io.IOException;
import java.util.Date;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
public class HelloController {

    @RequestMapping("/test")
    public @ResponseBody Client getClient() {
        System.out.println("heeeeee");
        return new Client();
    }

}

class Client {

    @JsonSerialize(using = CustomDateSerializer.class)
    private Date d = new Date();

    @JsonSerialize(using = CustomDateSerializer.class)
    public Date getD() {
        System.out.println("CP 2");
        return d;
    }

    public void setD(Date d) {
        this.d = d;
    }

}

class CustomDateSerializer extends JsonSerializer<Date> {

    @Override
    public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider)
            throws IOException, JsonGenerationException {

        System.out.println("CP 0");

        //SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'ZZZ (z)");
        //String format = formatter.format(value);
        //jgen.writeString(format);
        jgen.writeString("asdfasfdasdfasdf asdlkfja sdfljasd flkasdjf");
    }

}

【问题讨论】:

  • 您需要使用您的映射器类注册自定义序列化程序。您能分享一下您是如何定义映射器的吗?
  • 我们如何向映射器类注册自定义序列化程序。在这个应用程序中,我没有使用任何显式映射器声明或初始化..
  • 至少分享一下你是如何将jackson定义为你的json提供者的?所以我可以提供一个更有针对性的解决方案。
  • 抱歉,这是一个 Spring Boot 应用程序,当我在任何方法上使用 @ResponseBody 对其进行注释时,它会使用默认的序列化程序库自动将方法返回的 POJO 转换为 JSON 对象,该序列化程序库是 Jackson这个案例。
  • 嘿@DopedDude 你找到答案了吗?我的情况完全一样。

标签: java spring jackson


【解决方案1】:

您使用org.codehaus.jackson 库。 试试这个com.fasterxml.jackson。 这里是same problem 解决了。

【讨论】:

    猜你喜欢
    • 2016-12-31
    • 2014-08-02
    • 2017-10-30
    • 2017-08-10
    • 1970-01-01
    • 2013-10-10
    • 2015-03-08
    • 2017-01-30
    • 1970-01-01
    相关资源
    最近更新 更多