2014-01-29 22 views
2

我有一些關於BSON的問題,首先我想正確理解它的一些問題。使用BSON作爲配置文件

  1. 我見過使用JSON文件作爲配置文件的程序例子。這是我想嘗試的。事實是.INIs例如不適合我的使用。我必須通過解析器輸入我的程序中的參數列表。一些是ASCII字符串,一些是ASCII字符串數組,有些是32位整數,64位,雙打,雙精度數組等。 我已閱讀了一些BSON文檔。但在繼續之前。我很奇怪......是BSON適合這種用途嗎?

  2. 說我有一個字符串[「hello」,「meow」,「whatsup」]的數組,例如...是否有函數來訪問數組的每個元素,例如類似於C中的數組[1]。

  3. 看來BSON Library文檔包含一個創建BSON對象和所有API的API,但我沒有看到任何解析器。使用BSON的關鍵不是在我的情況下實現解析器。所以我想知道...有沒有一個庫來解析BSON文件,所以我只需要訪問這些對象而不用處理解析?

  4. Windows上的BSON庫是否可用?我可以將它包含在C++ MSVC項目中嗎?我想靜態鏈接它,因爲我的程序只能是.DLL,可能嗎?

  5. 我看到BSON包含像int32和int64這樣的數據類型。在一個BSON文件中,我怎樣才能將一個實例聲明爲int32? 這樣的事情? :

    { 「變量」:(INT32)82730}

謝謝!

謝謝!

+0

此問題可以因多種原因關閉。 – user2864740

+0

哪些?我正在尋找信息,我沒有看到有什麼不對。 – Yannick

+0

1)過於寬泛2)基於意見3)請求外部圖書館(請參閱常見問題解答) - 有更好的地方去尋找所要求的個別信息。 – user2864740

回答

2
  1. BSON是合適的,因爲它是一個二進制格式。存儲在BSON中的配置文件不可讀。
    但是,您可以使用C++ BSONObj來處理存儲在JSON中的配置。雖然我不得不重寫JSON解析器和發射器,因爲MongoDB提供的一些限制(無法解析頂級數組,64位整數是編碼的),我非常喜歡這種選擇,我使用BSON來處理JSON。以特定於MongoDB的方式)。
  2. 這取決於庫,有幾個BSON庫:C++ BSON庫,Java BSON庫,PHP BSON庫等。我只熟悉C++ BSON庫。在那個庫中有一個operator[] (int field)BSONArray所以是的,你可以做隨機訪問。
    你也可以得到一個vector數組的副本,你可以得到一個迭代器。 vector顯然具有隨機訪問,並且將迭代器移動到所需的位置也是微不足道的。
  3. 這就是它的美麗,BSON不需要解析器。例如,您可以mmap一個巨大的BSON文件,並開始使用它,而無需任何解析。
  4. 庫的很大一部分是僅包含頭文件的,您可能會使用庫的僅頭文件部分而沒有任何鏈接。編譯和鏈接MongoDB DLL應該是可能的,但我從來沒有嘗試過。
  5. BSON文件是二進制文件,它不是人類可讀的。
    如果您將JSON解析爲BSON,那麼MongoDB JSON解析器支持"variable" : { "$numberLong" : "82730" }表示法。默認情況下,一個數字被解析爲int32,如果它適合的話,如果不是,則被解析爲int64。