/**
* 根据path从json中取出结果并反序列成JavaBean
* @param json json字符串
* @param path 需要的json路径
* @param clz class
* @param <T> 具体类型
* @return res
*/
@SuppressWarnings("unchecked")
public static <T> T eval(String json, String path, Class<T> clz) {
Object obj = eval(json, path);
if (obj == null) {
return null;
}
if (obj instanceof String) {
if (clz.equals(Long.class)) {
return (T) Long.valueOf(obj.toString());
} else if (clz.equals(Integer.class)) {
return (T) Integer.valueOf(obj.toString());
} else if (clz.equals(String.class)) {
return (T) obj.toString();
} else if (clz.equals(Boolean.class)) {
return (T) Boolean.valueOf(obj.toString());
} else if (clz.equals(Double.class)) {
return (T) Double.valueOf(obj.toString());
} else if (clz.equals(Float.class)) {
return (T) Float.valueOf(obj.toString());
} else {
throw new IllegalArgumentException("eval error, illegal class type");
}
} else if (obj instanceof JSONObject) {
return JSONObject.parseObject(JSON.toJSONString(obj), clz);
} else if (obj instanceof JSONArray) {
throw new IllegalArgumentException("eval error, cannot cast to list");
}
return null;
}
/**
* 根据path从json中取出结果并反序列成JavaBean,该方法只支持array
* @param json json字符串
* @param path 需要的json路径
* @param clz class
* @param <T> 具体类型
* @return res
*/
public static <T> List<T> evals(String json, String path, Class<T> clz) {
Object obj = eval(json, path);
if (obj == null) {
return null;
}
if (obj instanceof JSONArray) {
return JSONArray.parseArray(JSON.toJSONString(obj), clz);
}
return null;
}
暂无答案!
目前还没有任何答案,快来回答吧!