【问题标题】:Is a binary JSON javascript library available for browsers?二进制 JSON javascript 库是否可用于浏览器?
【发布时间】:2011-11-24 09:18:43
【问题描述】:

为了实现高效的服务器端解析,我正在研究直接用于浏览器 JavaScript 环境的 BSON 解决方案。这个想法是通过二进制 websocket 来利用整个 ASCII 空间。有什么建议吗?

(也欢迎任何 nodejs 建议)

另请参阅: http://bsonspec.org/

【问题讨论】:

  • 我不知道您为什么要这样做?只需将 JSON 传入/传出客户端/浏览器,然后在服务器上根据需要转换为 BSON。
  • JavaScript 确实没有太多对低级操作的支持——比如那些允许 BSON 比 JSON 更高效的操作——所以你可能不得不使用 Flash...
  • @ChrisPietschmann:这会将我限制在 HTTP 和例如JSON 中的整数必须进行解析,而不是直接赋值。 (目的也是减少服务器上的负载)

标签: javascript json browser websocket bson


【解决方案1】:

不管怎样,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 中的结果:

【讨论】:

  • 是的,它在浏览器中受支持,提供了一个浏览器版本:github.com/mongodb/js-bson/tree/master/browser_build 也可以使用“bower install bson --save”通过 bower 安装
  • @SamuelNeff - 这根本不正确。它不仅得到官方支持,而且我已经看到它在多个项目中使用。我自己也用过。
  • @JSON,当我大约两年前发布它时,它是网站本身的引述。它说“用于节点的 JS/C++ Bson 解析器,用于 MongoDB 本机驱动程序”。从那以后,他们发生了变化,并明确声明他们支持浏览器。
  • 看起来他们稍微改变了导入的工作方式。我必须执行以下操作才能使其正常工作: var bson = new BSON(); bson.serialize(...);
【解决方案2】:

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

【讨论】:

  • 该库似乎适用于 Node.js,而不是浏览器。
猜你喜欢
  • 2020-02-23
  • 2021-04-08
  • 2011-05-05
  • 2012-01-25
  • 2011-07-24
  • 1970-01-01
  • 2019-04-15
  • 2021-06-05
  • 2014-04-07
相关资源
最近更新 更多