在早期版本的Java驱动程序中,JSON.parse曾用于将Json String解析为BasicDBObject或BasicDBList。但是在较新的java驱动程序中,BasicDBObject现在被移动到Document,而BasicDBList被移动到ArrayList。 Document.parse可用于将Json String解析为Document,但是我找不到任何等效的解析Json String数组到ArrayList的东西。 JSON.parse仍将返回BasicDBList而不是ArrayList,因此,例如,ArrayList会崩溃,因为单个元素无法转换为Document。
这个问题不是在这里进行类型转换。 JSON.parse将返回一个BasicDBList,它在转换为ArrayList时仍然是一个BasicDBList,因为ArrayList是一个超类。问题是将json字符串数组解析为ArrayList,可能更缺乏编解码器(尽管BasicDBObject有一个编解码器,但是没有一个用于BasicDBList)。是否有任何工作/标准解决方案?
我的代码片段:
ArrayList<Document> category = (ArrayList<Document>) JSON.parse(((requestBody.getArgumentByKey("category")).toString()));
崩溃于:
((Document) category.get(0))
以下消息:
java.lang.ClassCastException: com.mongodb.BasicDBObject cannot be cast to org.bson.Document
答案 0 :(得分:0)
JSON.parse()
将返回遗留类型。你会得到一个List<DBObject>
。 DBObject
s不是Document
s,不能像那样投射。要使用JSON.parse()
,您需要继续使用DBObject
或将这些DBObject
传递给Document
的{{1}}的构造函数。