Java Springboot 1.5.1迁移到2.0.1实例格式

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

我想将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中:

{
     "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。但我更喜欢你的答案。非常感谢。