MongoDB 自帶JSON類 序列化自定義物件為Json字串解決方案
阿新 • • 發佈:2019-02-05
今天在使用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 完美解決!