1. 程式人生 > >MongoDB 自帶JSON類 序列化自定義物件為Json字串解決方案

MongoDB 自帶JSON類 序列化自定義物件為Json字串解決方案

今天在使用MongoDB時,需要將自定義的POJO類通過mongoDB自帶的JSON.serialize序列化成一個Json格式的字串,但一直報json don't serialize object異常,又不想使用第三方的jar包,網上到處搜沒搜到。最後看api文件實現ObjectSerialize也不行。後來沒有辦法就看這部分的原始碼,終於從原始碼中推測出可能的方案,一測試,完美解決。多的不說,上程式碼
<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 完美解決!