如何在BSON和JSON之间进行转换,特别是对于那些特殊对象?

时间:2013-04-30 11:23:34

标签: json mongodb bson

要求任何图书馆这样做,我只是为bson_to_jsonjson_to_bson编写代码。

所以这是BSON specification

对于常规的double,doc,array,string,它很好,很容易在BSON和JSON之间进行转换。

但是,对于那些特定的对象,例如

TimestampUTC

如果从JSON转换为BSON,我怎么知道它们是时间戳和utc?

Regex(字符串,字符串),JavaScript code with scope(字符串,文档)

他们的结构有多个部分,我如何用JSON呈现结构?

Binary data(通用,功能等)`

如何以JSON格式呈现二进制数据的类型?

int32int64

如何以JSON形式呈现它们,所以BSON可以知道哪个是32位还是64位?

由于

1 个答案:

答案 0 :(得分:1)

我们知道JSON无法表达对象,因此您需要决定如何在ocaml驱动程序的输出中表示BSON对象的字符串化版本(字段类型)。

有些数据类型很简单,因为它只是内部分片而不需要Timestamp,并且最好省略Javascript块,因为它们最好只在{{{{}}内使用1}}作为保存的函数,用于MRs。

您还必须考虑其中一些字段实际上是进出的。我的意思是,有些用于指定要序列化为BSON的输入文档,有些是输出文档的一部分,需要从BSON反序列化为JSON。

system.js很可能是您发送的字段类型。因此,您需要将您的ocaml对象序列化为Regex来自{$regex: 'd', '$options': 'ig'} PCRE表示的BSON等效物。

/d/ig可以通过选择使用ISODate字符串或表示的时间戳来表示为JSON。输出类似于Date,您可以将{$sec:556675,$usec:6787}转换为所需的显示。

JSON中的

$sec数据可以通过从输出文档中取出Binary(如果我没记错的话)属性来表示,然后将其编码为base 64并将其存储为字段中的搅拌。

dataint32在JSON中没有真正的定义,但64位整数将大于2147483647,所以我不确定你是否可以保持数据类型的独特性。

这应该有助于你开始。