我有REST
服务使用“ test / plain ”,基本上我收到的字符串是JSON
字符串,我有以下代码来解析{ {1}}字符串JSON
,以便我可以将其保存到DBObject
。
MongoDB
我的@Timed
@POST
@Consumes("text/plain")
@Produces(MediaType.APPLICATION_JSON)
public Response insertscreenview(String message) {
// System.out.println(message);
final Logger logger = LoggerFactory.getLogger(ScreenviewResource.class);
logger.info("Screenview Insert Request Recieved" + "\n" + message);
screenviewInstance = new Screenview();
tracInfoInstance = new TracInfo();
BasicDBObject ageRangeId;
GeoCheckManager geoCheckInstance = new GeoCheckManager();
boolean brCheck;
try {
ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readTree(message);
System.out.println(message);
DBObject objInstance = (DBObject)JSON.parse(message);
...}
字符串看起来如下
JSON
它给我的错误如下,我无法找到原因。
java.lang.ClassCastException:java.util.HashMap无法强制转换为 com.mongodb.DBObject
答案 0 :(得分:2)
您可以使用DBObject
而不是使用BasicDBObject
,而BasicDBObject obj= new BasicDBObject(JSON.parse(message));
的构造函数将Map作为输入:
BasicDBObject obj = mapper.readValue(message, BasicDBObject.class);
或使用ObjectMapper:
{{1}}
答案 1 :(得分:1)
将字符串解析为DBObject的最新方法:
BasicDBObject dbObject = com.mongodb.BasicDBObject.parse(rawJsonString)
请注意,这可能仅应用于免费模式json对象,大多数情况下,诸如Springs MongoDBTemplate / MongoRepository之类的东西可以用于处理映射。