BSON序列化器/反序列化器

4

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

5个回答

3

另一个可能性是使用BSON4Jackson扩展,它为Jackson添加了对BSON读写的支持。


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 实例在解码过程中具有内部状态,因此它不是线程安全的。如果您逐个解码对象,则应该没问题,但如果您需要同时解码多个对象,则最好为每个解码会话创建一个实例。

1

0

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

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


0
你可以查看针对这些语言的MongoDB驱动程序,因为MongoDB使用BSON。看看他们使用了什么,或者借鉴他们的实现。

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