万能的JSON解析方法,获取指定字段值
直接上代码:
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
private String handleJsonResponse(String response,String field) {
if(StringUtils.isBlank(field)){
return response;
}
JSONObject jsonObject = JSON.parseObject(response);
return getFieldValue(jsonObject,field);
}
public String getFieldValue(JSONObject jsonObject, String fieldName) {
for (String key : jsonObject.keySet()) {
Object value = jsonObject.get(key);
if (key.equals(fieldName)) {
return value.toString();
} else if (value instanceof JSONObject) {
String fieldValue = getFieldValue((JSONObject) value, fieldName);
if (fieldValue != null) {
return fieldValue;
}
} else if (value instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) value;
String fieldValue = getFieldValue(jsonArray, fieldName);
if (fieldValue != null) {
return fieldValue;
}
}
}
return null;
}
public String getFieldValue(JSONArray jsonArray, String fieldName) {
for (Object objectValue : jsonArray) {
if (objectValue instanceof JSONObject) {
String fieldValue = getFieldValue((JSONObject) objectValue, fieldName);
if (fieldValue != null) {
return fieldValue;
}
}else if(objectValue instanceof JSONArray){
String fieldValue = getFieldValue((JSONArray)objectValue, fieldName);
if (fieldValue != null) {
return fieldValue;
}
}
}
return null;
}
如果第一步JSONARRAY的话,先调用第二个方法。