Jackson 反序列化 MongoDB ObjectId

stackoverflow上的回答


  • 项目中返回JSON时,mongo数据库中的id默认是ObjectId对象,但是我们要的却是.toString()字符串
// 先定义一个json生成器
public class ObjectIdJsonSerializer extends JsonSerializer {
 @Override 
  public void serialize(ObjectId o, JsonGenerator j, SerializerProvider s) throws IOException, JsonProcessingException {
     if(o == null) {
       j.writeNull(); 
      } else {
       j.writeString(o.toString()); 
      } 
    }
}
// 使用方法有两种:
// 第一种:(推荐)
//  在实体类上加上注解
@JsonSerialize(using=ObjectIdJsonSerializer.class)
private ObjectId id;
// -------------------
// -------------------
// -------------------
// 第二种: 
@Component
public class CustomModule extends SimpleModule {
    public CustomModule() {
        super(PackageVersion.VERSION);
        addSerializer(ObjectId.class, new ObjectIdJsonSerializer());
    }
    @Override
    public String getModuleName() { 
       return getClass().getSimpleName(); 
   }
}

你可能感兴趣的:(Jackson 反序列化 MongoDB ObjectId)