2014-01-06 67 views
1

我現在使用java方法com.mongodb.util.JSON.parse(param)將我的json字符串轉換爲DBObject.I發現,在大多數情況下,例如,當json字符串中的鍵是簡單類型如string或int時,JSON.parse()方法和終端都可以使用它。 例如:Mongodb- java函數com.mongodb.util.JSON.parse()

json string:{'times':8} 

兩個JSON.parse({ '倍':8})和db.collection.find({ '倍':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()方法解析,但不能在終端中使用。 我不知道這些差異的原因。

回答

0

您在Mongo Shell中使用的構造函數是JavaScript代碼,顯然不是您想要在Java應用程序中解析的嚴格JSON的一部分。這裏要批評的是shell不支持'$ date'之類的東西(就像我剛剛測試過自己一樣)。

這是例如討論的here