Grails - 将JSONObject保存到MongoDB时出错

时间:2016-03-07 16:52:15

标签: json mongodb grails groovy gorm

我无法使用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方法可以做到这一点,而不是只为两行代码导入一个全新的库。

2 个答案:

答案 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;记录。