是否有适用于PHP或Java的BSON序列化/反序列化库?
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
实例在解码过程中具有内部状态,因此它不是线程安全的。如果您逐个解码对象,则应该没问题,但如果您需要同时解码多个对象,则最好为每个解码会话创建一个实例。请查看此链接 http://php.net/manual/zh/ref.mongo.php
bson_decode — 将BSON对象反序列化为PHP数组
bson_encode — 将PHP变量序列化为BSON字符串
这里是我使用Rapidjson制作的C++11 JSON编码器和解码器,因为原生的JSON编码器(BSONObj::jsonString
)对于长整型使用了非标准编码:https://gist.github.com/ArtemGr/2c44cb451dc6a0cb46af
此外,与原生的JSON编码器不同,这个编码器没有解码顶层数组的问题。