方便起見,就將JSONArray的解析直接提成了一個函數,見下
/**
* <p>將JSONArray轉換成對象List
*
* @param jsonArray JSONArray
* @param clazz 對象class
* @return 對象List
* @author ManerFan
*
*/
public static <T> List<T> resolveJSONArray(JSONArray jsonArray, Class<T> clazz) {
Object objectList = JSONArray.toArray(jsonArray, clazz);
List<T> rtList = new ArrayList<>();
for (int i = 0; i < Array.getLength(objectList); i++) {
T addT = clazz.cast(Array.get(objectList, i));
if (null != addT) {
rtList.add(addT);
}
}
if (rtList.isEmpty()) {
return null;
}
return rtList;
}
前些日子發現,使用上述函數在轉換Long型時,必須使用 ["12","346","6793"]這樣的形式,即數字必須使用引號引起,否則會拋異常
public static List<Long> getLongArray4JSONArray(JSONArray jsonArray) {
try {
List<Long> longArray = new LinkedList<>();
for (int i = 0; i < jsonArray.size(); i++) {
longArray.add(jsonArray.getLong(i));
}
return longArray;
} catch (JSONException e) {
LOGGER.error("Cannot get Long(s) from JSON: " + jsonArray.toString(), e);
return null;
}
}
這樣一來,便可以轉換[12, 346, 6793]如此格式的JSONArray了