2015年7月7日 星期二

[Linux C] C語言程式中,在BSON裡加入JSON


JSON是JavaScript Object Notation的縮寫,而BSON內的成員也是跟JSON類似,不過是擺二進位(Binary)



而BSON是 MongoDB使用的格式,怎麼使用JSON跟BSON這就不贅述了!

想必再搜尋這樣功能時的讀者應該都已經清楚兩者格式

----

測試環境

作業系統:Ubuntu - 15.04 x64
Library: libjson-c & libmongoc



--

接下來來稍微介紹一下再C語言中怎麼將JSON Object插入BSON中。

假設現在我有一個JSON Object如下:

如果我將BSON設成string為Rawdata,value為JSON object的話該怎麼做呢?

STEP 1. 先建構好json_object

STEP 2. 利用JSON創建BSON

STEP 3. 將轉換好的BSON做為value插入最上層的BSON內

int main(void)
{
 struct json_object *json = NULL;
 bson_t *b = NULL;
 bson_t *a = bson_new ();
 json = json_object_new_object();

 /* STEP 1. setup JSON object */
 json_object_object_add(json, "Name", json_object_new_string("RenWei"));
 json_object_object_add(json, "Age", json_object_new_int( 22 ));
 json_object_object_add(json, "Sex", json_object_new_string("Male"));

 printf("%s\n",json_object_get_string(json));
 /* STEP 2. 利用JSON創建BSON */
 b = bson_new_from_json( json_object_get_string(json), -1, NULL);

 /* STEP 3. 將轉換好的BSON做為value插入最上層的BSON內 */
 bson_append_document(a, "RawData", -1, b);
 
 /* Show */
 char *str = bson_as_json( a, NULL);
 printf("%s\n",str);
 
 /* free the memory */
 bson_free(str);
 bson_destroy( b );
 bson_destroy( a );
 json_object_put(json);
 return 0;
}

執行結果



沒有留言:

張貼留言