Python

具有兩個不同輸出的 bsonfile 轉換

  • September 17, 2014

我想將一些 bson 文件轉換為一些 json 文件。我通過使用 bsondump 函式來做到這一點。

bsondump exemple.bson > example.json

通過 bsondump 的舊版本 2.4.9(取決於 mongodb 的版本),我以有效JSON 文件的形式得到正確的輸出(它實際上是一些帶有鍵值對的字典)。偶爾我為我的系統做了升級,現在有了 mongodb 2.6.3。它對我的輸出有影響……如果字典中的某個值是數字,則每次我以以下形式對我的數字進行額外補充時:

"key": NumberLong(1234567)

對我來說,以簡單的形式輸出很重要:

"key": 1234567

因為我想在 Python 程式碼中導入我的 JSON 文件。在 Python 程式碼中,我使用 Pandas 將我的 JSON 轉換為 DataFrame。為此,我使用

pandas.read_json("example.json")

函式,它讓我得到錯誤消息,因為它可以找到有效的 JSON 字元串。我想直接在Pandas中讀取 JSON,因此我需要有效的 JSON 格式。我的問題是,如何在 2.6.3 版本升級後直接獲得有效的 JSON 格式。目前我做了一個程式碼來刪除每一行中的“NumberLong”,但是我有很多行的文件,因此這是時間問題。如何使用新版本的 MongoDB 獲取有效的 JSON 格式?

bson不是二進制json,它是二進制擴展json。因此,適當的方法是使用擴展的 json 解析器來理解並正確處理額外資訊。

另一方面,人們意識到與 json 的不兼容可能會產生問題,並且至少有一個建議只是取消額外的資訊並讓解釋 json 的程式語言處理它(希望它可以)。

我不確定 2.6.3 版本的其他好處是什麼bsondump。您可能只是將舊版本(下一個)複製到新安裝中。或者,如果其中有其他功能需要使用,則可以修補和編譯新版本。

引用自:https://unix.stackexchange.com/questions/155987