public static JsonNode getJsonNodeByKey(Object object, String key)
{
if (object == null || object == "")
return null;
Class cls = object.getClass();
if(cls == ObjectNode.class) {
ObjectNode o = (ObjectNode)object;
if(o.has(key))
return o.findValue(key);
for (JsonNode jsonNode : o) {
JsonNode tmp = getJsonNodeByKey(jsonNode, key);
if( null != tmp)
return tmp;
}
}else if(cls == ArrayNode.class){
ArrayNode arrayNode = (ArrayNode)object;
if (arrayNode.has(key))
return arrayNode.get(key);
for (JsonNode jsonNode : arrayNode) {
JsonNode tmp = getJsonNodeByKey(jsonNode, key);
if(null != tmp)
return tmp;
}
}else if(cls == String.class){
try {
JsonNode jsonNode = objectMapper.readTree(object.toString());
JsonNode tmp = getJsonNodeByKey(jsonNode, key);
if(null != tmp)
return tmp;
}catch (Exception e)
{
return null;
}
}else if(cls == TextNode.class)
{
JsonNode tmp = getJsonNodeByKey(((TextNode)object).asText(), key);
if(null != tmp)
return tmp;
}
return null;
}
public static String getValueByKeyFromJson(Object object, String key) {
if (object == null || object == "")
return null;
Object oJson = object;
Class<? extends Object> cls = oJson.getClass();
if (cls == JSONObject.class) {
JSONObject jo = (JSONObject) oJson;
if (jo.containsKey(key)) {
return jo.getString(key);
}
for (Object o : jo.values()) {
String tmp = getValueByKeyFromJson(o, key);
if (!tmp.equals("Not Found") && tmp != null) {
return tmp;
}
}
} else if (cls == JSONArray.class) {
JSONArray ja = (JSONArray) oJson;
int size = ja.size();
for (int i = 0; i < size; i++) {
Object o = ja.get(i);
if (o != null && o != "") {
String tmp = getValueByKeyFromJson(o, key);
if (!tmp.equals("Not Found") && tmp != null) {
return tmp;
}
}
}
} else if (cls == String.class) {
Object o = null;
try {
o = JSON.parse((String) oJson);
String tmp = getValueByKeyFromJson(o, key);
if (!tmp.equals("Not Found") && tmp != null) {
return tmp;
}
} catch (JSONException e) {
}
}
return "Not Found";
}
1、第一個用的是jackson,第二個用的是fastjson