2011-09-07 8 views
1
내가 처음으로 JSON과 MongoDB를 사용하고

에서 수신 그래서 내가 MongoDB를 삽입하고 결과를 검색 할 때 내가 값을 exrtact 때 나는트림 따옴표는 .. MongoDB를

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

로 값을 얻을 "데이터베이스"의 난에 표시 따옴표로

"mykongDB"

같은 값을 얻는다. 그리고 JSON에서 값을 추출 할 때마다 큰 따옴표를 제거해야합니다. 이 JSON 또는 MongoDB를이 동작 아니면 내가 뭔가를 놓친 거지 방법입니다 ..

자바 몽고 드라이버를 사용하여 값을 검색하려면 코드가

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 파서를 사용하고 있습니다.

뭐가 잘못 됐나요? 나는 값을 추출 할 때마다 큰 따옴표를 제거하는 것을 원치 않는다.

감사

답변

5

그것은 따옴표처럼 보이지 않는이 문자열의 일부로서 몽고 필드에 저장되고있다. 그들이 있었다 경우, JSON 출력은 다음과 같이 보일 것입니다 :

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

그래서, 아마 JSON 구문 분석되는 방식의 결과입니다.

Java 드라이버가 JSObject를 DBObject 클래스로 deserialize합니까? 어쩌면 dboject.get("database") 같은 것을 호출하고 결과를 문자열로 캐스팅하여 필드에 액세스 할 수 있습니까?

또한 Java Language Center을 확인해 보는 것이 좋습니다. POJO 매핑을위한 자습서, 라이브러리 및 프레임 워크에 대한 많은 링크가있어 쉽게 사용할 수 있습니다.

+0

정확합니다. dbobject.get()은 정상적으로 작동합니다. JSON 구문 분석기를 사용하여 세부 정보를 얻으려는 잘못 생각했습니다. 감사합니다. – harshit