0

没有要求任何库这样做,我只是在为bson_to_jsonand编写代码json_to_bson

所以这里是BSON 规范

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

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

TimestampUTC

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

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

它们的结构有多个部分,我如何以 JSON 格式呈现这些结构?

Binary data(通用、函数等)`

如何在 JSON 中呈现二进制数据的类型?

int32int64

如何以 JSON 格式呈现它们,以便 BSON 可以知道哪个是 32 位或 64 位?

谢谢

4

1 回答 1

1

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

一些数据类型很简单,Timestamp不需要,因为它只在分片内部,并且Javascript块最好被排除在外,因为它们最好只system.js在 MR 中作为保存的函数使用。

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

Regex最有可能是您发送的字段类型。{$regex: 'd', '$options': 'ig'}因此,您需要将您的 ocaml 对象序列化为来自/d/igPCRE 表示的 BSON 等效项。

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

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

int32并且int64在 JSON 中两者之间没有真正的定义,除了 64 位整数将大于 2147483647 所以我不确定你是否可以在那里保持数据类型的唯一性。

这应该可以帮助您入门。

于 2013-04-30T14:43:34.033 回答