У меня такая же проблема, и пакет bson помог бы, только если у вас уже были данные типа dict.
Если у вас уже есть данные в dict, вы можете преобразовать их вjson вот так ( ссылка ):
from bson import json_util
import json
resulting_json = json.dumps(your_dict, default=json_util.default)
Если у вас есть строка, bson не поможет.Поэтому я просто удалил объекты, сделал строгую строку json и преобразовал в dict:
import json
import re
#This will outputs a iterator that converts each file line into a dict.
def readBsonFile(filename):
with open(filename, "r") as data_in:
for line in data_in:
# convert the TenGen JSON to Strict JSON
jsondata = re.sub(r'\:\s*\S+\s*\(\s*(\S+)\s*\)',
r':\1',
line)
# parse as JSON
line_out = json.loads(jsondata)
yield line_out
Файл с таким:
{ "_id" : ObjectId("5baca841d25ce14b7d3d017c"), "country" : "in", "state" : "", "date" : ISODate("1902-01-31T00:00:00.000Z")}
выведет этот dict:
{ "_id" : "5baca841d25ce14b7d3d017c",
"country" : "in",
"state" : "",
"date" : "1902-01-31T00:00:00.000Z"}