将bson转换为json(然后转换为csv或在Stata中加载json)

时间:2016-11-15 19:32:55

标签: python json bson

正如本文How to Import Data in .bson File所述,我有一个.bson文件,我想以某种方式加载到Stata中。

最好的情况是创建.csv文件,但将其转换为.json文件也会很棒。然后我想我可以在Stata中使用insheetjson

我熟悉python并找到了这篇文章MongoDB: BSON to JSON。答案说,可以使用simplejson包和此代码将bson转换为json:

result = db.mycol.find({ ....})
json = simplejson.dumps(result)

我怎样才能让它发挥作用?我不知道如何将bson文件加载到python中(我认为是db对象是什么)。我也不知道括号({ ....})应该怎么做。有什么建议?同样,另一个将.bson数据转换为.csv或.json的简单方法也是受欢迎的。

***更新

将评论纳入建议,我做了以下事情:

with open("filepath/games.bson", "r") as myfile:
    data = myfile.read()

#note that we need to change to unicode because of errors with some characters
data2 = unicode(data, errors='ignore')

with open('filepath/games.json', 'w') as data_file:
    json.dump(data2, data_file)

但在datadata2中,我得到的结果如下:

\x00\x02fg_pct\x00\x05\x00\x00\x00.273\x00\x10fga\x00\x0b\x00\x00\x00\x10ft\x00\x01\x00\x00\x00\x02ft_pct\x00\x05\x00\x00\x00.500\x00\x10fta\x00\x02\x00\x00\x00\x02mp\x00\x06\x00\x00\x0021:00\x00\x10orb\x00\x01\x00\x00\x00\x10pf\x00\x02\x00\x00\x00\x02player\x00\x0b\x00\x00\x00Juan Dixon\x00\x10plus_minus\x00\xee\xff\xff\xff\x10pts\x00\x08\x00\x00\x00\x10stl\x00\x01\x00\x00\x00\x10tov\x00\x01\x00\x00\x00\x10trb\x00\x02\x00\x00\x00\x00\x037\x00\xf7\x00\x00\x00\x10ast\x00\x02\x00\x00\x00\x10blk\x00\x00\x00\x00\x00\x10drb\x00\x02\x00\x00\x00\x10fg\x00\x00\x00\x00\x00\x10fg3\x00\x00\x00\x00\x00\x02fg3_pct\x00\x05\x00\x00\x00.000\x00\x10fg3a\x00\x03\x00\x00\x00\x02fg_pct\x00\x05\x00\x00\x00.000\x00\x10fga\x00\x05\x00\x00\x00\x10ft\x00\x02\x00\x00\x00\x02ft_pct\x00\x05\x00\x00\x00.500\x00\x10fta\x00\x04\x00\x00\x00\x02mp\x00\x06\x00\x00\x0020:00\x00\x10orb\x00\x00\x00\x00\x00\x10pf\x00\x02\x00\x00\x00\x02player

这似乎不是我想要的。如果是,我不知道如何在Stata或其他程序中打开它。

1 个答案:

答案 0 :(得分:0)

试试这个:

import bson
with open('filepath/games.bson','rb') as f:
    data = bson.decode_all(f.read())