diff --git a/src/main/java/cn/cloudowr/dict/Controller.java b/src/main/java/cn/cloudowr/dict/Controller.java index fc44ab8..39b5aae 100644 --- a/src/main/java/cn/cloudowr/dict/Controller.java +++ b/src/main/java/cn/cloudowr/dict/Controller.java @@ -12,6 +12,7 @@ import com.mongodb.client.result.UpdateResult; import org.bson.Document; import org.bson.conversions.Bson; import org.bson.types.ObjectId; +import sdk.FastJSONUtil; import java.util.ArrayList; import java.util.Arrays; @@ -44,11 +45,11 @@ public class Controller extends com.jfinal.core.Controller { Filters.and(ops) ).into(documents); - List json = new ArrayList<>(); - documents.forEach(doc -> { - json.add(doc.toJson()); - }); - renderText(Arrays.toString(json.toArray()), ContentType.JSON); +// List json = new ArrayList<>(); +// documents.forEach(doc -> { +// json.add(FastJSONUtil.bsonToJSON(doc)); +// }); + renderJson(FastJSONUtil.bsonToJSON(documents)); } public void dictList() { @@ -59,11 +60,12 @@ public class Controller extends com.jfinal.core.Controller { List documents = new ArrayList<>(); collection.find().limit(pageSize).skip(pageNum * pageSize).into(documents); - List json = new ArrayList<>(); - documents.forEach(doc -> { - json.add(doc.toJson()); - }); - renderText(Arrays.toString(json.toArray()), ContentType.JSON); +// List json = new ArrayList<>(); +// documents.forEach(doc -> { +// json.add(doc.toJson()); +// }); +// renderText(Arrays.toString(json.toArray()), ContentType.JSON); + renderJson(FastJSONUtil.bsonToJSON(documents)); } public void addDict() { @@ -81,7 +83,8 @@ public class Controller extends com.jfinal.core.Controller { } }); getCollection().insertOne(dict); - renderJson(dict.toJson()); +// renderJson(dict.toJson()); + renderJson(FastJSONUtil.bsonToJSON(dict)); } @Before(IdInterceptor.class) diff --git a/src/main/java/sdk/FastJSONUtil.java b/src/main/java/sdk/FastJSONUtil.java new file mode 100644 index 0000000..09f02d5 --- /dev/null +++ b/src/main/java/sdk/FastJSONUtil.java @@ -0,0 +1,17 @@ +package sdk; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializeConfig; + +/** + * Created by lyf66 on 2017/2/18. + */ +public class FastJSONUtil { + private static ObjectIdSerializer serializer = new ObjectIdSerializer(); + + public static String bsonToJSON(Object object) { + SerializeConfig mapping = new SerializeConfig(); + mapping.put(org.bson.types.ObjectId.class, serializer); + return JSON.toJSONString(object, mapping); + } +} diff --git a/src/main/java/sdk/ObjectIdSerializer.java b/src/main/java/sdk/ObjectIdSerializer.java new file mode 100644 index 0000000..9df131e --- /dev/null +++ b/src/main/java/sdk/ObjectIdSerializer.java @@ -0,0 +1,22 @@ +package sdk; + +import com.alibaba.fastjson.serializer.JSONSerializer; +import com.alibaba.fastjson.serializer.ObjectSerializer; +import org.bson.types.ObjectId; + +import java.io.IOException; +import java.lang.reflect.Type; + +/** + * Created by lisai on 17/2/9. + */ +public class ObjectIdSerializer implements ObjectSerializer { + @Override + public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException { + if(object == null) { + serializer.getWriter().writeNull(); + } else { + serializer.write(((ObjectId)object).toString()); + } + } +}