2016-09-06 5 views
1

아래 json 객체를 자르고 싶습니다. 이것은 mongoDB가 응답 한 것 위에 구축 한 json 객체입니다. 내가하고 싶은 일은 중복 속성이고 Curley 중괄호없이 값 (_id 또는 $ id)을 유지하고 단순히 속성 ID를 호출하기 때문에 $ oid 만 제거하는 것입니다. 그래서 내가 원하는 것은 "id"입니다 : "2283cef627ff2cc33ad5990" json과 힘들어하고 있습니다.자바를 사용하여 json 객체의 중복 속성을 제거하십시오.

{ 
    "_id": { 
     "$oid": "22383cef627ff2cc33ad5990" 
    }, 

    "name": "data1", 

    "users": [ 
    { 
     "$ref": "user", 
     "$id": { 
      "$oid": "16a5fbcee4b0c2c2da3017ef" 
     } 
    }, 
    { 
     "$ref": "user", 
     "$id": { 
      "$oid": "1795ff86e4b09fc66416cd2f" 
     } 
    }, 
], 
}, 

답변

0

a) 귀하가 Jackson처럼 원하는 속성을 객체로 JSON 변환 한 후 호출 할 매퍼를 사용할 수 있습니다 모든과 MyClass 클래스를 정의해야

ObjectMapper mapper = new ObjectMapper(); 
String jsonInString = YOUR_STRING; 

//from String to MyClass 
MyClass object = mapper.readValue(jsonInString, MyClass.class); 

을이 예에서 필요한 속성 (예 : _id, 이름, 사용자 등).

b)보다 빠른 솔루션을 구현하려는 경우 문자열을 직접 조작 할 수 있습니다. 당신이 OID는 항상 24 자입니다 것을 알고 있다면 당신은

String c = str.substring(str.indexOf("\"", str.indexOf("$oid")+6)+1, str.indexOf("\"", str.indexOf("$oid")+6)+25); 

처럼 뭔가를 할 수 있지만, 내가보기 엔 잭슨를 살펴보고 그것을 시도를 제공하는 것이 좋습니다. 이와 같은 솔루션은 매우 약해서 JSON이 변경 될 때마다 잘못된 결과가 발생합니다.