今天在使用MongoDB时,需要将自定义的POJO类通过mongoDB自带的JSON.serialize序列化成一个Json格式的字符串,但一直报json don't serialize object异常,又不想使用第三方的jar包,网上到处搜没搜到。最后看api文档实现ObjectSerialize也不行。后来没有办法就看这部分的源码,终于从源码中推测出可能的方案,一测试,完美解决。多的不说,上代码
主要部分是继承 BasicDBObject ,然后使用put方法增加key-value完美解决!
<span style="font-family:Microsoft YaHei;font-size:10px;">public class Book extends <span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;">BasicDBObject </span></span>{
private String name;
private Date date = new Date();
private String [] users;
public Book() {
this.put("name", name);
this.put("date", date);
this.put("users", users);
}
public String getName() {
return name;
}
public void setName(String name) {
this.put("name", name);
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.put("date", date);
this.date = date;
}
public String[] getUsers() {
return users;
}
public void setUsers(String[] users) {
this.put("users", users);
this.users = users;
}
}</span>
测试: <span style="font-family:Microsoft YaHei;">MongoClient client = new MongoClient("localhost", 27017);
DB db = client.getDB("dadsf");
DBCollection book = db.getCollection("books");
Book b = new Book();
b.setName("javascript");
b.setUsers(new String[]{"a","b","c"});
String bs = JSON.serialize(b);
System.out.println(bs);
DBObject o = (DBObject) JSON.parse(bs);
book.save(o); </span>
主要部分是继承 BasicDBObject ,然后使用put方法增加key-value
版权声明:本文为zhangning_holley原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。