gpt4 book ai didi

json - Jackson Mapper 序列化/反序列化 ObjectId

转载 作者:行者123 更新时间:2023-12-04 01:57:16 25 4
gpt4 key购买 nike

我的 POJO 是:

import org.jongo.marshall.jackson.id.Id;

public class User {

@Id
private String id;
private String name;
private int age;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}

我从 mongo 数据库中获取用户,并希望将他输出到带有 jackson mapper 的文件中
ObjectMapper mapper = new ObjectMapper();
mapper.writerWithDefaultPrettyPrinter().writeValue(new File("c:/user.txt"), user);

我在我的文件中得到了这样的东西
{
"name" : "John",
"age" : 23,
"_id" : {
"time" : 1358443593000,
"inc" : 660831772,
"machine" : 2028353122,
"new" : false,
"timeSecond" : 1358443593
}
}

我需要将 id 字段作为字符串存储到文件中,因为当我反序列化这个对象时,我在 pojo 中的 id 字段看起来像这样

{"time":1358443593000,"inc":660831772,"machine":2028353122,"new":false,"timeSecond":1358443593}

任何帮助将不胜感激

最佳答案

回答我自己的问题。在这里找到解决方案 Spring 3.2 and Jackson 2: add custom object mapper

我需要自定义对象映射器和 ObjectId 序列化器。

public class ObjectIdSerializer extends JsonSerializer<ObjectId> {

@Override
public void serialize(ObjectId value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
jgen.writeString(value.toString());
}
}


public class CustomObjectMapper extends ObjectMapper {

public CustomObjectMapper() {
SimpleModule module = new SimpleModule("ObjectIdmodule");
module.addSerializer(ObjectId.class, new ObjectIdSerializer());
this.registerModule(module);
}

}

关于json - Jackson Mapper 序列化/反序列化 ObjectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14389198/

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