1.今天遇见fastJson对mongodb的ID序列化失去精度的问题,今天讲解下,并解决
如:id : 5baf10e781d589000175c5cd
fastJson装换后变成:
2.为题分析
首先是出现serializers里面并没有mongodb的ObjectId的序列化类
3.问题解决
实现fastJson的ObjectSerializer
public class ObjectIdSerializer implements ObjectSerializer {
public final static ObjectIdSerializer instance = new ObjectIdSerializer();
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
SerializeWriter out = serializer.out;
if (object instanceof ObjectId) {
ObjectId objectId = (ObjectId) object;
out.writeString(objectId.toString());
return;
}
}
}
SerializeConfig serializeConfig = SerializeConfig.getGlobalInstance();
serializeConfig.put(ObjectId.class , ObjectIdSerializer.instance);
JSON.toJSONString(map , serializeConfig);