Как преобразовать объект JSON в объект DBObject?

У меня есть объект JSON obj, который я хочу сохранить в MongoDB:

JSONObject obj = new JSONObject();
obj.put("title", obj1.title);
//For rules:
Map m = new LinkedHashMap();
// for rules, first create JSONArray  
JSONArray ja = new JSONArray(); 

m = new LinkedHashMap();
m.put("right_connective", "&&");
m.put("attribute", "amount");
m.put("operator", "< = ");
m.put("value", obj1.amount);
m.put("rank", 1);
m.put("encapsulated", "false");
ja.add(m);

m = new LinkedHashMap();
m.put("left_connective", "&&");
m.put("right_connective", "&&");
m.put("attribute", "project");
m.put("operator", "= = ");
m.put("value", obj1.project);
m.put("rank", 2);
m.put("encapsulated", "false");
ja.add(m);

m = new LinkedHashMap();
m.put("left_connective", "&&");
m.put("right_connective", "&&");
m.put("attribute", "type");
m.put("operator", "= = ");
m.put("value", obj1.type);
m.put("rank", 3);
m.put("encapsulated", "false");
ja.add(m);

m = new LinkedHashMap();
m.put("left_connective", "&&");
m.put("attribute", "car");
m.put("operator", "= = ");
m.put("value", obj1.car);
m.put("rank", 4);
m.put("encapsulated", "false");
ja.add(m);

obj.put("rule", ja);



Document doc = Document.parse( obj.toString() );
BasicDBObject dbObject = mapper.readValue(obj, BasicDBObject.class);
collection.insert(dbObject);

Я получаю сообщение об ошибке «сопоставитель не может быть преобразован в тип». Какой оператор импорта мне нужно включить? В противном случае вы можете предложить альтернативные методы? Я не хочу идти по маршруту MongoDocument, поскольку функция insertOne () пропускает некоторые документы при записи в БД.

Попробуйте использовать JsonObject вместо Map для переменной m

Sridhar 10.09.2018 11:21

Но тогда как мне преобразовать его в DBObject? Не могли бы вы немного уточнить? Я новичок в использовании Mongo с java. Если вы можете написать для одного объекта карты и написать строку для преобразования в DBObject, это мне очень поможет. Спасибо!

Indranil 10.09.2018 11:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
1 543
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я считаю, что вы используете jackson.Create ObjectMapper, как показано ниже, чтобы решить, что «сопоставитель не может быть преобразован в тип»

import com.fasterxml.jackson.databind.ObjectMapper; //import statement

ObjectMapper mapper = new ObjectMapper(); //initialization

Отображается ошибка: "com.fasterxml" не может быть разрешен.

Indranil 10.09.2018 11:44

Можете ли вы указать, какой тип импорта json вы используете в своем коде. Эта ссылка mkyong.com/mongodb/java-mongodb-convert-json-data-to-dbobjec‌ т может вам помочь.

Karthik 10.09.2018 11:49
Ответ принят как подходящий

Если вы работаете с org.json.JSONObject, вам не нужен маппер:

 DBObject object = (DBObject) JSON.parse(obj.toString());
 collection.insert(object)

Другие вопросы по теме