使用Java读取本地BSON文件

问题描述 投票:1回答:1

我有一个HTML 5游戏。我正在使用webpack /打字稿进行开发。

[通过使用require包含了一些数据,如下所示

    const dataJson = require('scripts/data/data.json');

除了bson,我想做同样的事情。我尝试过做这样的天真的方法

    const dataJson = require('scripts/data/data.bson');

但是这当然会失败,因为没有加载程序(不会使用currently no loaders are configured to process this file.进行编译。]

然后,我想在本地包含文件,加载文件,然后反序列化bson。或者,我想像使用bson时一样嵌入require。这是一些工具生成的数据,因此将在数据文件中。

我无法弄清楚。我已经尝试了以下方法。但这会导致result包含bitsFile或看起来像内容类型的内容(如果用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);

加载本地二进制文件的正确方法是什么?大概,一旦有了数据,我就可以从deserialize包中调用bson

好的,我在这里添加一些更正。我读取文件的方法是错误的。我知道File实际上会创建一个文件。因此,当将其传递给FileReader时,它将获得传递的两个bits的值。

我发现我可以通过两种方式获取本地文件。我可以使用XMLHttpRequest以及raw-loader加载程序。

但是我曾经这样做。我似乎无法使用bson将内容转换为JSON。 deserializeserializeparsestringify的任何变体都有问题。

有人碰巧拥有将BSON内容转换为Javascript对象的正确方法吗?

请注意,BSON是使用pymongo从python生成的。我的生成BSON的代码如下。

            with open(args.output_bson, 'wb') as fp:
                encoded = bson.encode(data_meta.to_dict())
                fp.write(encoded)

to_dict是字典。我同时输出了JSON(使用json)和BSON。

我还用bsondump测试了文件,并且确实将其转换为JSON。因此看来我加载的文件是有效的。

javascript bson
1个回答
0
投票

您可以使用bson

然后致电:

BSON.deserialize(theFile.target.result);
© www.soinside.com 2019 - 2024. All rights reserved.