2011-09-07 20 views
1

我使用JSON和MongoDB的第一次收到。所以當我插入的MongoDB和檢索結果我得到的值作爲修剪雙引號從MongoDB的

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

當我exrtact值的 「數據庫」 我得到的值作爲

「mykongDB」

在顯示雙引號。 我必須刪除雙引號每次我從JSON中提取值。這是JSON或MongoDB的表現還是我失去了一些東西的方式..

我的代碼在Java中使用蒙戈驅動器能夠獲取價值

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

我正在使用傑克森JSON解析器

最新錯誤?我不想處理刪除雙引號每次我提取的價值。

感謝

回答

5

它看起來並不像雙引號被存儲在蒙戈字段作爲字符串的一部分。如果他們的JSON輸出會是這個樣子:

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

因此,它可能的JSON是如何被解析的結果。

Java驅動程序是否將JSON解串入DBObject類?也許你通過調用類似dboject.get("database")並將結果轉換爲字符串來訪問該字段?

它也值得檢查Java Language Center,有許多指向POJO映射的教程,庫和框架的鏈接可能會使生活更輕鬆。

+0

你是對的。 dbobject.get()工作正常。我錯誤地假設使用JSON解析器來獲取詳細信息..謝謝 – harshit