private static Map<String, Object> map4DBObject(DBObject obj){
        Map<String, Object> ret = new HashMap<String, Object>();
        if(obj == null)return ret;

        for(Object o:obj.keySet().toArray()){
            String key = (String)o;
            if (key.equals("_id") || key.endsWith("._id")) {
                ret.put(key, (obj.get(key) == null)?"":obj.get(key).toString() );
            }else if(obj.get(key) instanceof BasicDBList) {
                BasicDBList list = (BasicDBList)obj.get(key);
                Object[] array = new Object[list.size()];
                for(int i = 0 ; i < list.size() ; i++){
                    if(list.get(i) instanceof DBObject){
                        array[i] = map4DBObject((DBObject)list.get(i));
                    }else{
                        array[i] = list.get(i);
                    }
                }
                ret.put(key, array);
            }else if(obj.get(key) instanceof DBObject) {
                ret.put(key, map4DBObject((DBObject)obj.get(key)));
            }else{
                ret.put(key, obj.get(key));
            }
        }
        return ret;
    }