在Javascript中读取本地BSON文件
我有一个HTML5游戏。我正在使用webpack/typescript进行开发 我使用在Javascript中读取本地BSON文件,javascript,bson,Javascript,Bson,我有一个HTML5游戏。我正在使用webpack/typescript进行开发 我使用require包含了一些数据,如下所示 const dataJson = require('scripts/data/data.json'); 除了bson,我想做同样的事情。我尝试过这样做的天真方法 const dataJson = require('scripts/data/data.bson'); 但这当然会失败,因为没有加载程序(不会使用编译当前没有配置加载程序来处理此文件。) 然后
require
包含了一些数据,如下所示
const dataJson = require('scripts/data/data.json');
除了bson,我想做同样的事情。我尝试过这样做的天真方法
const dataJson = require('scripts/data/data.bson');
但这当然会失败,因为没有加载程序(不会使用编译当前没有配置加载程序来处理此文件。
)
然后我想在本地包含该文件,加载该文件,然后反序列化bson。或者我想在使用require
时嵌入bson
like。这是一些工具生成的数据,因此它将位于数据文件中
我还没弄明白。我试过以下方法。但是这会导致结果
包含文件
的位
,或者类似于内容类型的内容(如果作为readAsDataURL
执行)
我试过的
const file = new File(['data'], 'assets/data.bson', { type: 'application/bson' });
const reader = new FileReader();
reader.onload=(theFile) => {
if (theFile.target) {
console.log(theFile.target.result);
}
} ;
reader.readAsDataURL(file);
//reader.readAsBinaryString(file);
加载本地二进制文件的正确方法是什么?大概,一旦我有了数据,我就可以从bson
包调用反序列化
好的,我在这里加了一些修正。
我读取文件的方法是错误的。我知道understandFile
实际上会创建一个文件。所以,当它被传递到FileReader
时,它将获得传入的两个位的值
我发现我可以通过两种方式获取本地文件。我可以使用XMLHttpRequest
以及原始加载程序
加载程序
但是一旦我这样做了。我似乎无法使用bson
将内容转换为JSON。反序列化
、序列化
、解析
或字符串化
的任何变体都有一些问题
是否有人碰巧拥有将BSON内容转换为Javascript对象的正确方法
请注意,BSON是使用pymongo
从python生成的。我生成BSON的代码如下所示
with open(args.output_bson, 'wb') as fp:
encoded = bson.encode(data_meta.to_dict())
fp.write(encoded)
是一本字典。我同时输出JSON(使用JSON
)和BSON
我还使用bsondump
测试了该文件,它确实转换为JSON。因此,我加载的文件似乎是有效的。您可以使用
然后打电话:
BSON.deserialize(theFile.target.result);
谢谢你的回复。不幸的是,这不起作用。我用新的发现更新了我的问题。你明白了吗?