gpt4 book ai didi

java - Mongo 无法将 Hashmap 转换为 BasicDBObject

转载 作者:可可西里 更新时间:2023-11-01 10:03:27 25 4
gpt4 key购买 nike

我一直在开发一个 Java 程序,该程序使用 Mongo 数据库来存储基于地理坐标的飞机的某些数据。该应用程序正在收集信息并以正确的方式填充模型对象。

当我尝试将对象发送到 mongo 数据库时,出现以下错误:java.lang.ClassCastException: java.util.hashmap cannot be cast to com.mongodb.basicDbObject. 问题除了这个异常(exception):我没有 HashMap(或一般的任何类型的 Map)

要将对象添加到数据库,我使用以下代码:

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));

这里的网格单元格包含两个 float 和一个平面对象列表。平面对象包含一个字符串和另外 10 个 double 值。除此之外,这些类只有所有变量的基本 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;

一个getter和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 库。

如果你想要MongoDB的DBObject,你可以使用com.mongodb.util.JSON

import com.mongodb.util.JSON;

DBObject bson = ( DBObject ) JSON.parse( json );

如果您有来自其他地方的现有 map ,您也可以尝试从 new BasicDBObject() 开始并将数据putAll 放入其中。

关于java - Mongo 无法将 Hashmap 转换为 BasicDBObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32821861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com