Bson And Json

本文主要內容: 
一、講述Bson和Json的區別 
二、Mongodb java api 中 Java對象和Bson對象的轉換 


======================================== 

在研究Mongodb的時候,Mongodb的文檔上說: 

引用
MongoDB uses BSON as the data storage and network transfer format for "documents".


Mongodb 使用BSON做爲文檔數據的存儲以及網絡傳輸格式。看到這,腦袋裏蹦出個念頭,怎麼不是JSON 而是 BSON,BSON和JSON是什麼關係,兄弟仍是父子關係?呵呵,是什麼新鮮玩意兒?google了一把,首先看看wikipedia上怎麼說: 

引用

BSON documents (objects) consist of a well ordered list of elements. Each element consists of a field name, a type, and a value. Field names are strings. Types include: 

    * string 
    * integer 
    * double 
    * date 
    * byte array (binary data) 
    * boolean (true and false) 
    * null 
    * BSON object 

This is nominally a superset of JSON types (JSON does not have a byte array type, for example), but because of length limitations, some valid JSON values (such as very long strings) are not valid BSON values. 


說白了,Bson的祖先仍是Json,只不過是加強了的Json,在數據類型上,比json支持的要普遍,並採用二進制方式編碼,其餘在表現形式上基本無他。 

Mongodb 採用Bson這種形式做爲數據的存儲形式,但其java 驅動感受用起來不爽,DBObject是進行存儲的基類,要將Java 對象存入Mongo,需將java 對象的屬性一個挨一個的put 進去(具體使用方法參見 http://www.mongodb.org/display/DOCS/Java+Tutorial ),感受用起來不是很舒服,不能直接將Java 對象存入。解決的辦法我想能夠有如下兩個方法: 

1) 利用反射和Annotation(註釋?),寫個類直接將Java 對象轉換成DBObject。這種方式實現起來應該不困難,可是嵌套對象的問題不太好弄。 

2)先將Java 對象轉換成Json 字符串,而後利用Mongo的JSON 幫助類,直接將Json 字符串解析成DBObject,但不知道效率。 
相關文章
相關標籤/搜索