有没有适用于浏览器的二进制JSON JavaScript库?

22
为了实现高效的服务器端解析,我正在研究在浏览器JavaScript环境中直接使用BSON解决方案。这个想法是通过二进制Websockets利用整个ASCII空间。有什么建议吗?
(欢迎任何Node.js的建议)
另请参阅:http://bsonspec.org/

2
我不确定你为什么想这样做?只需将 JSON 传递到/从客户端/浏览器,然后在服务器上按照需要转换为 BSON。 - Chris Pietschmann
JavaScript 真的不太支持低级别的操作,比如那些使 BSON 比 JSON 更高效的操作,所以你可能需要使用 Flash... - Matt Ball
2
@ChrisPietschmann:这会限制我只能使用HTTP,例如,在JSON中,整数必须被解析,而不能直接赋值。(意图也是减轻服务器负担) - Lorenz Lo Sauer
2个回答

15

就目前而言,MongoDB团队似乎已经有了一个受支持的Javascript BSON项目:

https://github.com/mongodb/js-bson

我对该库不是专家,但该项目声称可以在Node和浏览器中使用。以下是他们网站上的一个修改后的示例:

<head>
  <!-- Originally https://raw.github.com/mongodb/js-bson/master/browser_build/bson.js -->
  <!-- But downloaded and hosted locally -->
  <script src="./bson.js"></script>
</head>
<body onload="start();">
<script>
  function start() {
    var BSON = bson().BSON;
    var Long = bson().Long;

    var doc = {
      oid: bson().ObjectID(),
      long: Long.fromNumber(100),
      date: new Date(),
      string: "js-bson sample",
      obj: { 
        string: "Object within an object"
      }
    }
    console.log("doc %o", doc);

    // Serialize a document
    var data = BSON.serialize(doc, false, true, false);
    console.log("data %o", data);

    // De serialize it again
    var doc_2 = BSON.deserialize(data);
    console.log("doc_2 %o", doc_2);
  }
</script>
</body>

以下是我在Chrome中得到的结果:

在此输入图片描述


3
是的,在浏览器中支持它,提供了一个浏览器版本的构建:https://github.com/mongodb/js-bson/tree/master/browser_build。也可以通过使用“bower install bson --save”来安装。 - arcseldon
@SamuelNeff - 这并不正确。它不仅得到了官方支持,而且我已经在多个项目中看到它被使用。我自己也用过它。 - JSON
@JSON,我在将近两年前发布这篇文章时引用了网站本身的话。它说:“一个用于Node的JS/C++ Bson解析器,在MongoDB原生驱动程序中使用”。自那以后,他们已经改变并明确表示支持浏览器。 - Samuel Neff
看起来他们稍微改变了导入的方式。我必须按照以下步骤才能使其工作:var bson = new BSON(); bson.serialize(...); - bruceceng

6
这可能不完整,但该项目的目标与您所需的相符:https://github.com/muhmi/javascript-bson 看起来它并没有直接编码为类型化数组,这对于通过WebSocket发送最有用。

该库似乎是为 Node.js 设计的,而不是浏览器。 - Chris_F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接