我一直在研究一個Java程序,它利用Mongo數據庫來存儲有關基於地理座標的飛機的某些數據。應用程序正在努力達到收集信息並以正確方式填充模型對象的地步。Mongo無法將HashMap投射到BasicDBObject
當我嘗試發送對象向蒙戈數據庫,會出現以下錯誤:java.lang.ClassCastException: java.util.hashmap cannot be cast to com.mongodb.basicDbObject.
與此異常的問題:我沒有一個HashMap(或通常任何類型的地圖)
要添加對象到我使用下面的代碼數據庫:
DBCollection table = db.getCollection(GRID_NAME);
GridCell c = cell.getCell(true);
String jString = (String) mapper.writeValueAsString(c); //mapper is a Jackson ObjectMapper
System.out.println(jString);
table.insert((BasicDBObject) JSON.parse(jString));
在這裏的網格單元包含兩個浮標和平面對象的名單。平面對象包含一個字符串和另外10個雙精度值。除此之外,這些類只對所有變量擁有基本的getter和setter。
柵格單元
private float lat;
private float lng;
private List<Plane> planeList;
平面
private String identiefier;
private double minHeight;
private double maxHeight;
private double avgHeight;
private double minSpeed;
private double maxSpeed;
private double avgSpeed;
private double minCourse;
private double maxCourse;
private double avgCourse;
的吸氣和setter(都看或多或少相同這兩個)
public float getLng() {
return lng;
}
public void setLng(float lng) {
this.lng = lng;
}
正如你在上面看到的,我將json字符串打印到控制檯以檢查它是否正確。我不得不承認,我的普通json閱讀技能充其量是狡猾的。但我在這找不到hashmap:
{"lat":28.0,"lng":5.0,"planeList":[{"identifier":"myTestPlane","minHeight":1.0,"maxHeigh":2.0,"avgHeight":1.5,"minSpeed":1.0,"maxSpeed":2.0,"avgSpeed":1.5,"minCourse":1.0,"maxCourse":2.0,"avgCourse":1.5}]}
任何想法或建議我做錯了什麼?我可能有一個週一早上的時刻,但我真的無法弄清楚。
'JSON.parse'很可能產生一個HashMap。你在那裏使用什麼圖書館? – Thilo
@Thilo org.mortbay.util.ajax.JSON –
這對MongoDB無所知。我認爲還有'com.mongodb.util.JSON'。試試那個。 http://stackoverflow.com/a/12261133/14955 – Thilo