如何从json数据中获取Date对象

时间:2014-11-09 23:53:26

标签: javascript java json mongodb

我只是想用一个字段Date解析一个Json文档,如下所示: '死':日期('2007-03-17T04:00:00Z')使用

com.mongodb.util.JSON.parse(document)

遇到值Date时会出现异常。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

这里的关键是导出的数据已经做错了。可能有人从MongoDB shell运行某些东西并将控制台输出重定向到文件。这基本上是“做错了”。

有一个名为MongoDB Extended JSON的概念,实际上已经在其他一些领域被选中,特别是EJSON project。这样做的目的是确保任何导出的JSON都保持“类型”信息到BSON类型标识符(或其他对象类型,用于EJSON的目的),以便类似的“扩展JSON”解析器可以“重新构造”对象到它的预期形式。

对于“日期”对象,有意的JSON表示是:

{ "death": { "$date": "2007-03-17T04:00:00Z" } }

由于com.mongodb.util.JSON.parse 启用了解扩展JSON规范,因此任何此类JSON构造导致从解析后构造正确的日期对象数据

所以你现在拥有的只是一个“字符串”。事实上,如果没有像这样“引用”:

´ { "death" : "Date('2007-03-17T04:00:00Z')" }

然后它实际上甚至不是有效的JSON,甚至在基本的JSON解析器不会出错之前甚至需要被操作到正确的形式。无论如何,结果只是一个“字符串”,所以你需要对数值数据进行正则表达式匹配,然后将其传递给日期对象构造。

显然,这里要做的“最好的”事情是修复数据的“导出”源,以便它以正确的扩展方式对JSON进行解析。然后你正在使用的解析器会做正确的事情。