从ObjectId的源码中就可以看出,ObjectId被Jackson序列化后,肯定是一个json对象。
但是我们很多时候需要的是ObjectId的hex形式,为此我们需要为ObjectId提供一个序列化器。
import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.SerializerProvider;import org.bson.types.ObjectId;import java.io.IOException;/*** Jackson序列化器:ObjectId序列化器* ObjectId默认会序列化成一个Json对象,而非一个hex字符串* 所以需要专门提供一个序列化器来实现得到hex字符串的目的*/public class ObjectIdSerializer extends JsonSerializer<ObjectId> {@Overridepublic void serialize(ObjectId value, JsonGenerator gen, SerializerProvider serializers) throws IOException {if (value == null) {gen.writeNull();} else {gen.writeString(value.toHexString());}}}
