是否可以为浏览器提供二进制JSON javascript库?

时间:2011-09-24 20:01:32

标签: javascript json browser websocket bson

为了进行有效的服务器端解析,我正在寻找一个直接用于浏览器javascript环境的BSON解决方案。我们的想法是通过二进制websockets利用整个ASCII空间。有什么建议吗?

(欢迎任何nodejs建议)

另见: http://bsonspec.org/

3 个答案:

答案 0 :(得分:11)

对于它的价值,似乎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中的结果:

enter image description here

答案 1 :(得分:6)

这可能是不完整的,但项目的目标与你想要的一致:https://github.com/muhmi/javascript-bson它看起来不像直接编码到通过WebSocket发送最有用的类型数组。

答案 2 :(得分:0)

2019年,现代浏览器已经在其中嵌入了以下功能:

btoa("string to be coded on base64 format") 
atob("base64 string to be uncoded")

您将在这里看到:https://caniuse.com/#search=btoa 列出的所有浏览器都具有此功能。