修改从mongoDB收到的json中的双引号

har*_*hit 1 java mongodb

我第一次使用JSON和MongoDb ..所以当我插入Mongodb并检索结果时,我得到的值为

{ "_id" : { "$oid" : "4e67eb04b475e7c236a0c82c"} , "database" : "mkyongDB" , "table" : "hosting" , "detail" : { "records" : 99 , "index" : "vps_index1" , "active" : "true"}}
Run Code Online (Sandbox Code Playgroud)

当我取消"数据库"的值时,我得到的值为

"mykongDB"

显示双引号.每次我从JSON中提取值时,我都必须删除双引号.这是JSON或MongoDB的行为方式还是我错过了什么......

我在java中使用mongo驱动程序检索值的代码

public DBObject find(String key,String value){
    BasicDBObject query = new BasicDBObject(key,value);
    return collection.findOne(query);
}
Run Code Online (Sandbox Code Playgroud)

我从JSON中提取价值的方式是

    DBObject dboject = client.find("database", "mkyongDB");
    System.out.println(dboject);
    JsonNode node =  mapper.readTree(dboject.toString());
    JsonNode innerNode = ((ObjectNode)node).get("_id");
    System.out.println(innerNode);
     String objectId = innerNode.get("$oid").toString();
Run Code Online (Sandbox Code Playgroud)

我正在使用jackson JSON解析器

怎么了 ?每次我提取值时,我都不想处理删除双引号.

谢谢

Chr*_*tow 5

它看起来不像双引号作为字符串的一部分存储在Mongo字段中.如果是,JSON输出将如下所示:

{ "database" : "\"mkyongDB\"" }
Run Code Online (Sandbox Code Playgroud)

所以,这可能是JSON如何被解析的结果.

Java驱动程序是否将JSON反序列化为DBObject类?也许您通过调用类似的东西dboject.get("database")并将结果转换为字符串来访问该字段?

它还值得一看Java语言中心,有很多指向POJO映射的教程,库和框架的链接,可以让生活更轻松.