我一直在研究一个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