Как я могу преобразовать объект JSON в DBObject? - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть объект 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);

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

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Вам не нужен картограф, если вы работаете с org.json.JSONObject:

 DBObject object = (DBObject) JSON.parse(obj.toString());
 collection.insert(object)
0 голосов
/ 10 сентября 2018

Я полагаю, что вы используете Джексон. Создайте ObjectMapper, как показано ниже, для разрешения "преобразователь не может быть преобразован в тип"

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

ObjectMapper mapper = new ObjectMapper(); //initialization
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...