Mongo String query to BasicDBObject in java
public class MongoStr2DBObject {
public BasicDBObject processQuery (String query) {
Object obj = JSONValue.parse(query);
if (obj.getClass() == JSONObject.class) {
BasicDBObject Q = (BasicDBObject)process(new BasicDBObject(), obj);
System.out.println("Q: " + Q.toString());
return Q;
}
else {
return new BasicDBObject();
}
}
public Object process (BasicDBObject dbo, Object jso) {
Class clazz = jso.getClass();
if (clazz == JSONObject.class) {
JSONObject json_o = (JSONObject) jso;
Iterator it = json_o.keySet().iterator();
while (it.hasNext()) {
String key = it.next().toString();
Object value = json_o.get(key);
if (value.getClass() == JSONObject.class) {
BasicDBObject Q2 = (BasicDBObject) process(new BasicDBObject(), value);
dbo.append(key, Q2);
}
else if (value.getClass() == JSONArray.class) {
BasicDBList Q2 = (BasicDBList) process(new BasicDBObject(), value);
dbo.append(key, Q2);
}
else {
dbo.append(key, value);
}
}
}
else if (clazz == JSONArray.class) {
JSONArray array = (JSONArray) jso;
Iterator it = array.iterator();
BasicDBList list = new BasicDBList();
while (it.hasNext()) {
Object next = it.next();
if (next.getClass() == JSONArray.class || next.getClass() == JSONObject.class) {
list.add(process(new BasicDBObject(), next));
}
else {
list.add(next);
}
}
return list;
}
return dbo;
}
}