2016-03-07 2 views
1

У меня возникли проблемы с сохранением JSONObject в базе данных MongoDB с использованием плагина MongoDB.Grails - Ошибка сохранения JSONObject to MongoDB

Я получаю сообщение:
Can't find a codec for class org.codehaus.groovy.grails.web.json.JSONObject..

Это очень расстраивает, потому что я использую JSON парсер для загрузки данных в формате JSON, но не может сохраняться этот JSON данные в MongoDb, которые должны быть простыми.

Есть ли встроенный способ преобразования объекта JSONOB в обычную карту? Я пробовал использовать его, используя asType(Map), (Map) и даже используя toString(), а затем вернусь, чтобы преобразовать обратно из строки в объект. Я видел, что другие вопросы ванильной Java связаны с использованием Jackson, но я надеюсь, что есть способ Groovier сделать это, а не импортировать всю новую библиотеку всего за две строки кода.

ответ

1

Это то, что я делаю сейчас:

Преобразование JSONObject в строку, а затем с помощью com.mongodb.util.JSON.parse(), чтобы преобразовать эту строку в DBObject, что Монго можно использовать.

Это не самое лучшее, но пока оно работает.

Я не буду принимать этот ответ, потому что я не думаю, что это правильный ответ.

0

Не сказать, что это правильный ответ, но я смог преобразовать JSONObject в HashMap. Для моей ситуации я имел объект домена с ArrayList (преобразованным из JSONArray предыдущего JSONTranslationService), и я был в состоянии преобразовать каждый из внутренних JSONObject с использованием что-то вроде этого:

static final UNMARSHAL = { thing -> 
    thing.objects.collect { 
    it as Hashmap 
    } 
} 

Я только переживаю это после обновления с mongodb: от 3.0.2 до 6.1.2 для поддержки MongoDB 3.4. Вы также используете эту версию плагина? Если это так, я считаю справедливым сказать, что в плагине есть ошибка (я уже знаю one) или что-то изменилось с поведением по умолчанию и не было документировано.