public static JsonElement encode(BasicBSONList a) { JsonArray result = new JsonArray(); for (int i = 0; i < a.size(); ++i) { Object o = a.get(i); if (o instanceof DBObject) { result.add(encode((DBObject) o)); } else if (o instanceof BasicBSONObject) { result.add(encode((BasicBSONObject) o)); } else if (o instanceof BasicBSONList) { result.add(encode((BasicBSONList) o)); } else if (o instanceof BasicDBList) { result.add(encode((BasicDBList) o)); } else { // Must be a primitive... if (o instanceof String) { result.add(new JsonPrimitive((String) o)); } else if (o instanceof Number) { result.add(new JsonPrimitive((Number) o)); } else if (o instanceof Boolean) { result.add(new JsonPrimitive((Boolean) o)); } // MongoDB special fields else if (o instanceof ObjectId) { JsonObject oid = new JsonObject(); oid.add("$oid", new JsonPrimitive(((ObjectId) o).toString())); result.add(oid); } else if (o instanceof Date) { JsonObject date = new JsonObject(); date.add("$date", new JsonPrimitive(_format.format((Date) o))); result.add(date); } // Ignore BinaryData, should be serializing that anyway... } } return result; } // TESTED
public static <T> BasicBSONList createList( Map<String, T> map, String keyName, BsonValueHandler<T> valueHandler) { BasicBSONList list = new BasicBSONList(); for (Entry<String, T> entry : map.entrySet()) { BSONObject obj = new BasicBSONObject(); obj.put(keyName, entry.getKey()); valueHandler.populateBsonObject(obj, entry.getValue()); list.add(obj); } return list; }
/** * 这里获取全部数据 * * @param field * @return */ public Release fill(Fields field) { Release tb = null; if (null != field) { tb = new Release(); tb.setId(field.getString("_id")); if (null != field.get(Meta.STATUS)) tb.setStatus(field.getInt(Meta.STATUS)); if (null != field.get(Meta.TID)) tb.setTid(field.getString(Meta.TID)); if (null != field.get(Meta.NAME)) tb.setName(field.getString(Meta.NAME)); if (null != field.get(Meta.OWNER)) tb.setOwner(field.getString(Meta.OWNER)); if (null != field.get(Meta.VERSION)) tb.setVersion(field.getString(Meta.VERSION)); if (null != field.get(Meta.URL)) tb.setUrl(field.getString(Meta.URL)); if (null != field.get(Meta.CRTAT)) tb.setCrtAt(field.getLong(Meta.CRTAT)); if (null != field.get(Meta.UPDAT)) tb.setUpdAt(field.getLong(Meta.UPDAT)); if (null != field.get(Meta.LEVEL)) tb.setLevel(field.getInt(Meta.LEVEL)); if (null != field.get(Meta.COPYRIGHT)) tb.setCopyright(field.getInt(Meta.COPYRIGHT)); if (null != field.get(Meta.OPERATOR)) tb.setOperator(field.getString(Meta.OPERATOR)); if (null != field.get(Meta.RELEASEEXPLAIN)) tb.setReleaseExplain(field.getString(Meta.RELEASEEXPLAIN)); if (null != field.get(Meta.UPDATEEXPLAIN)) tb.setUpdateExplain(field.getString(Meta.UPDATEEXPLAIN)); List<Server> listCover = new ArrayList<Server>(); if (null != field.get(Meta.SERVER)) { BasicBSONList listC = (BasicBSONList) field.get(Meta.SERVER); for (int j = 0; listC.size() > j; j++) { BasicBSONObject bd = (BasicBSONObject) listC.get(j); Server s = new Server(); s.setAddr(bd.getString(Meta.ADDR)); s.setContent(bd.getString(Meta.CONTENT)); s.setDownAt(bd.getLong(Meta.DOWNAT)); s.setId(bd.getString(Meta.ID)); s.setName(bd.getString(Meta.NAME)); s.setNo(bd.getString(Meta.NO)); s.setReleaseAt(bd.getLong(Meta.RELEASEAT)); s.setReleaseOwner(bd.getString(Meta.RELEASEOWNER)); s.setStauts(bd.getInt(Meta.STATUS)); s.setSummary(bd.getString(Meta.SUMMARY)); listCover.add(s); } tb.setServer(listCover); } } return tb; }