在Spring-boot中将ObjectId作为字符串

时间:2020-09-02 16:41:48

标签: mongodb spring-boot

我正在使用Spring Boot和mongodb新创建一个应用程序。当我获取数据时,它会给出ObjectId

的扩展格式

用户模型类

@Document("users")
@Data
public class User {

    @Id
    private ObjectId id;
    // other fields
}

获取时,输出如下所示,

"id": {
    "timestamp": 1599063464,
    "counter": 693238,
    "time": 1599063464000,
    "date": "2020-09-02T16:17:44.000+0000",
    "timeSecond": 1599063464,
    "machineIdentifier": 4212949,
    "processIdentifier": 11210
}

但是我想总是以String的形式获取它。我关注了Java serialization problem with MongoDB ObjectId。但是,如果不能总是按预期工作

1 个答案:

答案 0 :(得分:1)

您可以使用jackson来解决此问题。杰克逊提供的功能之一就是序列化。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.0.rc1</version>
</dependency>

像下面这样在主类中创建一个bean

@Bean
public Jackson2ObjectMapperBuilderCustomizer customizer()
{
    return builder -> builder.serializerByType(ObjectId.class,new ToStringSerializer());
}

现在,您将获得预期的输出。