我不要求任何图书馆这样做,我只是为bson_to_json
和json_to_bson
编写代码。
所以这是BSON specification。
对于常规的double,doc,array,string,它很好,很容易在BSON和JSON之间进行转换。
但是,对于那些特定的对象,例如
Timestamp
和UTC
:
如果从JSON转换为BSON,我怎么知道它们是时间戳和utc?
Regex
(字符串,字符串),JavaScript code with scope
(字符串,文档)
他们的结构有多个部分,我如何用JSON呈现结构?
Binary data
(通用,功能等)`
如何以JSON格式呈现二进制数据的类型?
int32
和int64
如何以JSON形式呈现它们,所以BSON可以知道哪个是32位还是64位?
由于
答案 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}
转换为所需的显示。
$sec
数据可以通过从输出文档中取出Binary
(如果我没记错的话)属性来表示,然后将其编码为base 64并将其存储为字段中的搅拌。
data
和int32
在JSON中没有真正的定义,但64位整数将大于2147483647,所以我不确定你是否可以保持数据类型的独特性。
这应该有助于你开始。