java - 将 Json 解析为 DBObject

标签 java json mongodb

我有一个使用“test/plain”的 REST 服务,基本上我收到的字符串是一个 JSON 字符串,我有以下代码将 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 字符串如下所示

{
"Screenview": {
    "TracInfo": null,
    "Id": 0,
    "ScreenName": "SettingsActivity",
    "Timestamp": "2014-07-02T18:50:10",
    "Timezone": "Asia/Kolkata",
    "ApplicationId": null,
    "DeviceId": null,
    "UserId": null,
    "SessionId": "5684ae84-9a48-49a5-ab47-fcb7de3c08cf"
},
"Session": {
    "Id": "5684ae84-9a48-49a5-ab47-fcb7de3c08cf",
    "StartTime": "2014-07-02T13:20:58",
    "EndTime": "2014-07-02T13:21:09",
    "EntryScreen": "AccessPointActivity",
    "ExitScreen": "SettingsActivity",
    "FirstEvent": "SCREEN STARTED",
    "LastEvent": "SCREEN STOPPED",
    "ApplicationId": "fa41f204bfc711e3b9f9c8cbb8c502c4",
    "DeviceId": "0_6e505bcbe7e511e393b60aba4a7caa0b",
    "UserId": "",
    "TracInfoId": -1,
    "SensorsInfo": null
},
"CustomParams": {
    "Latitude": 0,
    "Longitude": 0,
    "Country": null,
    "CountryCode": null,
    "Region": null,
    "RegionCode": null,
    "City": null,
    "Gender": null,
    "Age": 0,
    "Platform": "Android",
    "OSVersion": "16",
    "Manufacturer": "samsung",
    "Resolution": "600 * 976",
    "NetworkCarrier": null,
    "Timezone": null
} }

它给我错误如下,我无法找到原因。

java.lang.ClassCastException: java.util.HashMap cannot be cast to com.mongodb.DBObject

最佳答案

您可以使用 BasicDBObject 而不是使用 DBObject,它有一个以 Map 作为输入的构造函数:

BasicDBObject obj= new BasicDBObject(JSON.parse(message));

或使用 ObjectMapper:

BasicDBObject obj = mapper.readValue(message, BasicDBObject.class);

关于java - 将 Json 解析为 DBObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24651053/

相关文章:

java - java API中的-sentenceDelimiter换行符

java - 如何从字符串图像中获取像素 RGB 值? .get 不适用于 imageLoader(处理中)

javascript - js-xlsx 如何重新排列列?

javascript - 使用所选的选择选项使用 angularjs 解析 JSON

mongodb - 在 Mongoid 3 中,我可以构建一个 Queryable 然后将它传递给 where 方法吗?

node.js - 如何在 Node 中的mongodb上更新后获取结果数组数据?

java - Lambda表达式和方法重载的疑惑

java - 在 MongoDB 中使用 QueryDSL - java.lang.NoClassDefFoundError

javascript - steam价格概述语法错误

javascript - 每次 var 更改后更新 res.locals 吗?