【发布时间】: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 你找到答案了吗?我的情况完全一样。