我无法使用MongoDB插件将JSONObject保存到MongoDB数据库。
我收到消息:
Can't find a codec for class org.codehaus.groovy.grails.web.json.JSONObject..
这非常令人沮丧,因为我使用JSON解析器加载JSON数据,但不能将此JSON数据持久保存到MongoDb,这应该很简单。
是否有内置方法将JSONOBject转换为普通Map?我尝试使用asType( Map )
,( Map )
进行投射,甚至使用toString()
并且不想将其从字符串转换回对象。我已经看到其他普通Java问题涉及使用Jackson,但我希望有一种Groovier方法可以做到这一点,而不是只为两行代码导入一个全新的库。
答案 0 :(得分:1)
这就是我现在正在做的事情:
将JSONObject转换为字符串,然后使用com.mongodb.util.JSON.parse()将该字符串转换为Mongo可以使用的DBObject。
这不是最好的,但它现在有效。
我不会接受这个答案,因为我认为这不是正确答案。
答案 1 :(得分:0)
不是说这是正确答案,但我能够将JSONObject
转换为HashMap
。对于我的情况,我有一个带有ArrayList
的域对象(由先前的JSONTranslationService从JSONArray
转换而来),我能够使用以下内容转换每个内部JSONObject
:< / p>
static final UNMARSHAL = { thing ->
thing.objects.collect {
it as Hashmap
}
}
我从mongodb:3.0.2升级到6.1.2后才遇到此问题,以支持MongoDB 3.4。你也在运行这个版本的插件吗?如果是这样,我认为可以说插件中有一个错误(我已经知道one)或者某些内容因默认行为而发生了变化而且没有#&#&#。 39;记录。