Как преобразовать объект 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
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)

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