我第一次使用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解析器
怎么了?我不希望每次提取值时都删除双引号。
由于
答案 0 :(得分:5)
看起来双引号不是作为字符串的一部分存储在Mongo字段中。如果是,则JSON输出看起来像这样:
{ "database" : "\"mkyongDB\"" }
所以,这可能是解析JSON的结果。
Java驱动程序是否将JSON反序列化为DBObject类?也许您通过调用dboject.get("database")
之类的内容并将结果转换为字符串来访问该字段?
还值得查看Java Language Center,有很多指向POJO映射的教程,库和框架的链接可能会让生活更轻松。