Java Springboot 1.5.1迁移到2.0.1实例格式
我想将springboot项目从1.5.1迁移到2.0.1 但是当我在RestController中返回模型时,即时格式是不同的 返回对象:Java Springboot 1.5.1迁移到2.0.1实例格式,java,spring-boot,jackson,gson,Java,Spring Boot,Jackson,Gson,我想将springboot项目从1.5.1迁移到2.0.1 但是当我在RestController中返回模型时,即时格式是不同的 返回对象: public class Message { private Instant instant; } 在1.5.1中: { "instant": { "epochSecond": 1537263091, "nano": 557000000 } } 在2.0.1中: { "insta
public class Message {
private Instant instant;
}
在1.5.1中:
{
"instant": {
"epochSecond": 1537263091,
"nano": 557000000
}
}
在2.0.1中:
{
"instant": "2018-09-18T09:46:02.646Z"
}
我怎么才能得到这个{
“即时”:{
“纪元秒”:1537263091,
“纳米”:557000000
}
}当我使用2.0.1时,您可能可以在应用程序上设置此操作。属性:
spring.jackson.serialization.write_dates_as_timestamps=false
在迁移过程中,如果添加了以下任何依赖项,请尝试将其删除:
jackson-modules-java8
jackson-datatype-jsr310
[更新]
另一种方法是,您可以为Instant编写序列化程序:
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.time.Instant;
public class CustomInstantSerializer extends JsonSerializer<Instant> {
@Override
public void serialize(Instant o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeObject(new EpochInstant(o));
}
public static class EpochInstant {
private final long epochSecond;
private final int nano;
EpochInstant(Instant instant) {
this.epochSecond = instant.getEpochSecond();
this.nano = instant.getNano();
}
}
}
您可能可以在应用程序上设置此操作。属性:
spring.jackson.serialization.write_dates_as_timestamps=false
在迁移过程中,如果添加了以下任何依赖项,请尝试将其删除:
jackson-modules-java8
jackson-datatype-jsr310
[更新]
另一种方法是,您可以为Instant编写序列化程序:
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.time.Instant;
public class CustomInstantSerializer extends JsonSerializer<Instant> {
@Override
public void serialize(Instant o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeObject(new EpochInstant(o));
}
public static class EpochInstant {
private final long epochSecond;
private final int nano;
EpochInstant(Instant instant) {
this.epochSecond = instant.getEpochSecond();
this.nano = instant.getNano();
}
}
}
不可以。springboot 1.5.1中的日期格式不是时间戳格式。如果设置为false,则不会有任何更改。如果将该属性设置为true,则会发现输出为{“instant”:1537267373.794}。我想要的是一个{“瞬间”:{“纪元秒”:1537267373,“纳米”:794000000}好吧,伟大的作品。我认为添加@Configuration和JsonSerializer对我来说很好。此外,我还发现了一些其他方法,比如排除Jackson和使用gson。但我更喜欢你的答案。谢谢,不用了。springboot 1.5.1中的日期格式不是时间戳格式。如果设置为false,则不会有任何更改。如果将该属性设置为true,则会发现输出为{“instant”:1537267373.794}。我想要的是一个{“瞬间”:{“纪元秒”:1537267373,“纳米”:794000000}好吧,伟大的作品。我认为添加@Configuration和JsonSerializer对我来说很好。此外,我还发现了一些其他方法,比如排除Jackson和使用gson。但我更喜欢你的答案。非常感谢。