4

是否有用于 PHP 或 Java 的 BSON 序列化器/反序列化器库?

4

5 回答 5

3

另一种可能性是Jackson的BSON4Jackson扩展,它增加了对 BSON 读/写的支持。

于 2011-01-11T06:55:22.983 回答
1

Java 中的 BSON 编码器/解码器非常简单。以下代码片段来自我的应用程序,所以它在 Scala 中。我相信您可以轻松地从中构建 Java 实现。

import org.bson.BSON
import com.mongodb.{DBObject, DBDecoder, DefaultDBDecoder}

def convert(dbo: DBObject): Array[Byte] =
  BSON.encode(dbo)

// NB! this is a stateful object and thus it's not thread-safe, so have
// to create one per decoding
def decoder: DBDecoder = DefaultDBDecoder.FACTORY.create

def convert(data: Array[Byte]): DBObject =
  // NOTE: we do not support Ref in input, that's why "null" for DBCollection
  decoder.decode(data, null)

def convert(is: InputStream): DBObject =
  // NOTE: we do not support Ref in input, that's why "null" for DBCollection
  decoder.decode(is, null)

唯一重要的注意事项是该DBEncoder实例在解码期间具有它(重新)使用的内部状态,因此它不是线程安全的。如果您逐个解码对象应该没问题,但否则您最好为每个解码会话创建一个实例。

于 2012-01-09T10:58:10.730 回答
1

检查此链接 http://php.net/manual/en/ref.mongo.php

bson_decode — 将 BSON 对象反序列化为 PHP 数组

bson_encode — 将 PHP 变量序列化为 BSON 字符串

于 2013-01-28T10:36:32.037 回答
0

您可以检查这些语言的 MongoDB 驱动程序,因为 MongoDB 使用 BSON。查看他们使用什么,或窃取他们的实现。

于 2010-09-20T23:50:08.327 回答
0

这是我使用 Rapidjson 制作的 C++11 JSON 编码器和解码器,因为原生 JSON 编码器 ( BSONObj::jsonString) 对 long 使用非标准编码:https ://gist.github.com/ArtemGr/2c44cb451dc6a0cb46af

此外,与原生 JSON 编码器不同,这个编码器在解码顶级数组时没有问题。

于 2014-06-13T14:30:46.187 回答