我只是想用一个字段Date解析一个Json文档,如下所示: '死':日期('2007-03-17T04:00:00Z')使用
com.mongodb.util.JSON.parse(document)
遇到值Date时会出现异常。有什么帮助吗?
答案 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进行解析。然后你正在使用的解析器会做正确的事情。