gpt4 book ai didi

java - Springboot 1.5.1迁移到2.0.1实例格式

转载 作者:行者123 更新时间:2023-12-02 01:55:22 27 4
gpt4 key购买 nike

我想将我的 springboot 项目从 1.5.1 迁移到 2.0.1。

但是当我在 RestController 中返回模型时,Instant 格式是不同的。

返回对象:

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 时?

最佳答案

您可以在 application.properties 上设置此操作:

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();
}
}
}

并有一个配置类,将 Instant 设置为使用序列化器:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import java.time.Instant;

@Configuration
public class JacksonConfiguration {

@Bean
@Primary
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(Instant.class, new CustomInstantSerializer());

return objectMapper;
}
}

关于java - Springboot 1.5.1迁移到2.0.1实例格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52384006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com