import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.collections4.MultiValuedMap;
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
import java.util.Iterator;
import java.util.Map;
/**
* 获取复杂对象中 所有字段 和值
* <code>
* {
* "displayName":"wqwqwq",
* "mobile":"19978945612",
* "position":"",
* "sex":0,
* "idCardNo":"",
* "image":"",
* "country":"1002",
* "secretLevel":"4",
* "birthday":1619193600000,
* "nationality":"21",
* "workNo":"wqqwqwwq",
* "type":"3",
* "userEmail":"[email protected]",
* "swUserOfficePhone":"wqwqqw",
* "maritalStatus":"0",
* "certificateCn":"yttttttt",
* "status":2000,
* "jobInfo":{
* "companyJobInfo":{
* "orgId":"28953882975739904",
* "orgName":"",
* "email":"",
* "secretLevel":"",
* "officeAddress":"67878787",
* "jobLevel":"qwwqwq",
* "userOfficePhone":""
* },
* "userJobList":[
* {
* "orgId":"73534012313059328",
* "showOrder":78,
* "orgNo":"213",
* "job":"qwwwwwwww",
* "position":"看了看",
* "jobAttribute":"发的"
* }
* ]
* }
* }
* </code>
*
* @author Created by niugang on 2021-04-25 15:14
*/
public class GetObjectField {
public static void main(String[] args) throws JsonProcessingException {
//使用apache ArrayListValuedHashMap 防止 key重复 ,如果是标准对象 在属性定义时
//会避免属性名重复的
MultiValuedMap<String, Object> hashMap = new ArrayListValuedHashMap<>();
ObjectMapper objectMapper = new ObjectMapper();
String aa = "{\"displayName\":\"wqwqwq\",\"mobile\":\"19978945612\",\"position\":\"\",\"sex\":0,\"idCardNo\":\"\",\"image\":\"\",\"country\":\"1002\",\"secretLevel\":\"4\",\"birthday\":1619193600000,\"nationality\":\"21\",\"workNo\":\"wqqwqwwq\",\"type\":\"3\",\"userEmail\":\"[email protected]\",\"swUserOfficePhone\":\"wqwqqw\",\"maritalStatus\":\"0\",\"certificateCn\":\"yttttttt\",\"status\":2000,\"jobInfo\":{\"companyJobInfo\":{\"orgId\":\"28953882975739904\",\"orgName\":\"\",\"email\":\"\",\"secretLevel\":\"\",\"officeAddress\":\"67878787\",\"jobLevel\":\"qwwqwq\",\"userOfficePhone\":\"\"},\"userJobList\":[{\"orgId\":\"73534012313059328\",\"showOrder\":78,\"orgNo\":\"213\",\"job\":\"qwwwwwwww\",\"position\":\"看了看\",\"jobAttribute\":\"发的\"}]}}";
JsonNode jsonNode = objectMapper.readTree(aa);
recursiveProcessing(jsonNode, hashMap);
System.out.println(hashMap);
System.out.println(hashMap.size());
}
/**
* 递归遍历
*
* @param jsonNode jsonNode
* @param hashMap hashMap
*/
public static void recursiveProcessing(JsonNode jsonNode, MultiValuedMap<String, Object> hashMap) {
Iterator<Map.Entry<String, JsonNode>> fields = jsonNode.fields();
while (fields.hasNext()) {
Map.Entry<String, JsonNode> next = fields.next();
String key = next.getKey();
JsonNode value = next.getValue();
if (value.isObject()) {
recursiveProcessing(value, hashMap);
} else if (value.isArray()) {
for (JsonNode node : value) {
recursiveProcessing(node, hashMap);
}
} else {
if (value.isNull()) {
hashMap.put(key, null);
} else {
if (value.isLong()) {
hashMap.put(key, value.asLong());
} else if (value.isInt()) {
hashMap.put(key, value.asInt());
} else if (value.isBoolean()) {
hashMap.put(key, value.asBoolean());
} else if (value.isBigDecimal()) {
hashMap.put(key, value.decimalValue());
} else if (value.isDouble()) {
hashMap.put(key, value.doubleValue());
} else if (value.isFloat()) {
hashMap.put(key, value.floatValue());
} else if (value.isBigInteger()) {
hashMap.put(key, value.bigIntegerValue());
} else {
hashMap.put(key, value.asText());
}
}
}
}
}
}
获取复杂对象中所有字段和值
猜你喜欢
转载自blog.csdn.net/niugang0920/article/details/116701367
今日推荐
周排行