解析JSONArray爲List對象

項目開發中,頁面經常會向後臺傳遞一些json格式的字符串,而對json格式字符串的解析又經常會用到

方便起見,就將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"]這樣的形式,即數字必須使用引號引起,否則會拋異常
爲了解決這個問題,使用getLong接口,又專門寫了一個轉換Long數組的函數,如下
    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了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章