Не могу преобразовать BSON в JSON в Python 2.7 с помощью модуля BSON - PullRequest
0 голосов
/ 13 января 2019

Невозможно преобразовать в объект json из файла bson. Файл bson: https://s3.amazonaws.com/orim-misc-data/assessment/books.bson

Я хочу преобразовать файл Bson в объект Json. Но я получал исключение, когда использовал модуль bson и прикрепленный файл,

INPUTF = "books.bson"
input_file = io.open(INPUTF, 'r', encoding='utf-8',errors='ignore')
datas = bson.loads(input_file.read())

1 Ответ

0 голосов
/ 15 января 2019

BSON - это не просто замена JSON.

BSON - это двоичный формат объекта, а не текстовый формат (даже если он хранит строки в кодировке UTF-8)

Ваш нож должен отражать бинарный режим

# input_file = io.open(INPUTF, 'r', encoding='utf-8',errors='ignore')  # old
input_file = io.open(INPUTF, 'rb')
                               ^
                               | (b opens the file in binary mode
--------------------------------   does not need the rest of the encoding/error params)

Вам нужно будет вызвать функцию bson.decode_all (data) вместо загрузки s

# datas = bson.loads(input_file.read()) # old
datas = bson.decode_all(input_file.read()) # python list object

настоятельно рекомендуем вам bson.decode_iter , если ваш конвейер его поддерживает

#datas = bson.loads(input_file.read()) # old
datas = bson.decode_file_iter(input_file) # python generator object
for document in datas:
    # do something with each document
    # very easy on system io and memory
...