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

时间:2011-09-07 22:38:18

标签: java mongodb

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

{ "_id" : { "$oid" : "4e67eb04b475e7c236a0c82c"} , "database" : "mkyongDB" , "table" : "hosting" , "detail" : { "records" : 99 , "index" : "vps_index1" , "active" : "true"}}

当我表达“数据库”的值时,我得到的值为

  

“mykongDB”

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

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

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

我从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();

我正在使用jackson JSON解析器

怎么了?我不希望每次提取值时都删除双引号。

由于

1 个答案:

答案 0 :(得分:5)

看起来双引号不是作为字符串的一部分存储在Mongo字段中。如果是,则JSON输出看起来像这样:

{ "database" : "\"mkyongDB\"" }

所以,这可能是解析JSON的结果。

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

还值得查看Java Language Center,有很多指向POJO映射的教程,库和框架的链接可能会让生活更轻松。