Mongodb-java函数com.Mongodb.util.JSON.parse()

Mongodb-java函数com.Mongodb.util.JSON.parse(),java,json,mongodb,Java,Json,Mongodb,我现在使用java方法com.mongodb.util.JSON.parse(param)将我的JSON字符串转换为DBObject。我发现,在大多数情况下,例如,当JSON字符串中的键是简单类型(如string或int)时,JSON.parse()方法和终端都可以使用它。 例如: json string:{'times':8} 终端中的JSON.parse({'times':8})和db.collection.find({'times':8})都可以正常工作 但当我查询ISODate或_id

我现在使用java方法com.mongodb.util.JSON.parse(param)将我的JSON字符串转换为DBObject。我发现,在大多数情况下,例如,当JSON字符串中的键是简单类型(如string或int)时,JSON.parse()方法和终端都可以使用它。 例如:

json string:{'times':8}
终端中的JSON.parse({'times':8})和db.collection.find({'times':8})都可以正常工作

但当我查询ISODate或_id时,情况就不同了:

json string 1 :{'createDate':ISODate('2013-10-21T06:39:16.692Z')} 

json strign 2: {'createDate':{'$date':'2013-10-21T06:39:16.692Z'}}
json字符串1可以在终端中正常工作,但无法通过json.parse()方法进行解析。 相反,json字符串2可以由json.parse()方法解析,但不能在终端中使用

同样的事情发生在_id

json string 3:{'_id':ObjectId('1231daf213432414321431')} 

json string 4:{'_id':{'$oid':'fadf234234sdfadfasdfa12'}}
json字符串3可以在终端中正常工作,但无法通过json.parse()方法进行解析。 相反,json字符串4可以由json.parse()方法解析,但不能在终端中使用。
我不知道这些差异的原因。

您在Mongo Shell中使用的构造函数是JavaScript代码,显然不是您希望在Java应用程序中解析的严格JSON的一部分。这里要批评的一点是shell不支持像“$date”这样的东西(我刚才也测试了自己)

这就是我们讨论的例子