如何将JSON对象转换为DBObject?

时间:2018-09-10 09:14:16

标签: java mongodb

我有一个要存储到MongoDB中的JSON对象obj:

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()函数在写入数据库时​​会跳过一些文档。

2 个答案:

答案 0 :(得分:1)

如果您使用org.json.JSONObject,则不需要映射器:

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

答案 1 :(得分:0)

我相信您正在使用jackson.Create如下所示的ObjectMapper来解决“映射器无法解析为类型”

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

ObjectMapper mapper = new ObjectMapper(); //initialization