使用java修剪json对象中的冗余属性
问题描述:
我想修剪下面的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"
}
},
],
},
答
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的每一个变化都会导致错误的结果。