2016-09-06 27 views
1

我想修剪下面的json对象。这是我在mongoDB响应的基础上构建的json对象。我想要做的是只删除$ oid,因为它们是冗余属性,并保留值(_id或$ id),而无需使用Curley花括号,只需调用属性ID即可。 所以我需要的只是“身份证”:“2283cef627ff2cc33ad5990” 你能帮我吗我正在与json苦苦挣扎。使用java修剪json对象中的冗余属性

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

    "name": "data1", 

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

回答

0

a)您可以使用一个映射到你的JSON转换成一个对象,然后调用所需的属性,如Jackson

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

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

在这个例子中,你必须定义一个类MyClass的所有您需要的属性(例如_id,名称,用户等)。 b)如果你想实现一个更快的解决方案,你可以直接操纵字符串;如果你知道OID始终为24个字符,你可以这样做

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

,但我强烈建议去看看杰克逊,并给它一试。像这样的解决方案非常脆弱,JSON的每一个变化都会导致错误的结果。