json递归查找key对应的值

来源:互联网 发布:知惠是什么意思 编辑:程序博客网 时间:2024/05/21 17:09
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


原创粉丝点击