我一直致力于开发一个java程序,该程序利用Mongo数据库根据地理坐标存储有关飞机的某些数据。应用程序正在努力收集信息并以正确的方式填充模型对象。
当我尝试将对象发送到mongo数据库时,我收到以下错误:java.lang.ClassCastException: java.util.hashmap cannot be cast to com.mongodb.basicDbObject.
此异常的问题:我没有HashMap(或任何类型的Map)< / p>
要将对象添加到数据库,请使用以下代码:
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;
一个吸气剂和二传手(所有看起来或多或少都与这两个相同)
public float getLng() {
return lng;
}
public void setLng(float lng) {
this.lng = lng;
}
正如您在上面所看到的,我将json字符串打印到控制台以检查它是否正确。我不得不承认我的普通json阅读技巧充其量是狡猾的。但我无法在此找到一个哈希图:
{"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}]}
我有什么想法或建议我做错了什么?我可能有一个星期一早上的时刻,但我真的无法弄清楚。
答案 0 :(得分:3)
你正在使用&#34;错误&#34; JSON库。
如果你想要MongoDB的DBObject
,你可以使用com.mongodb.util.JSON
。
import com.mongodb.util.JSON;
DBObject bson = ( DBObject ) JSON.parse( json );
如果您有来自其他地方的现有地图,您也可以尝试将new BasicDBObject()
和putAll
数据加入其中。
答案 1 :(得分:0)
请注意,不推荐使用DBObject,鼓励使用Document:http://mongodb.github.io/mongo-java-driver/3.1/bson/documents/