首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JSON 生成工具類大全:從拼接字符串到反射自動序列化多層對象

     編輯:Java 綜合教學

JSON 生成工具類大全

針對移動端交互,封裝多層次 JSON 生成方法:

1. 基礎拼接

public static String getBasicJsonStr(int reqCode, String bak) {
    StringBuffer sb = new StringBuffer("{\"outParam\":{");
    sb.append("\"reqCode\":\"").append(reqCode).append("\",");
    sb.append("\"reqBak\":\"").append(bak != null ? bak : getDesc(reqCode)).append("\",");
    sb.append("\"respTime\":\"").append(currentTime()).append("\"");
    sb.append("}}");
    return sb.toString();
}

2. 支援單對象 + 字段列表

public static String getJsonStr(int reqCode, Object[] fields, List<?> list, Class<?> clazz,
                                Object[] supFields, Object[] supVals) throws Exception {
    StringBuffer sb = new StringBuffer("{\"outParam\":{\"reqCode\":\"").append(reqCode)
        .append("\",\"reqBak\":\"").append(getDesc(reqCode))
        .append("\",\"respTime\":\"").append(currentTime()).append("\",\"life\":{");
    // supFields 附加字段
    if (supFields != null) { ... }
    // 列表序列化
    if (list != null && !list.isEmpty()) {
        sb.append("\"lifeList\":[");
        for (Object obj : list) {
            sb.append("{");
            for (int j = 0; j < fields.length; j++) {
                Method m = clazz.getDeclaredMethod("get" + capitalize(fields[j].toString()));
                Object val = m.invoke(obj);
                sb.append("\"").append(fields[j]).append("\":\"").append(val == null ? "" : val).append("\"");
                if (j != fields.length - 1) sb.append(",");
            }
            sb.append("}");
            if (obj != list.get(list.size() - 1)) sb.append(",");
        }
        sb.append("]");
    }
    sb.append("}}}");
    return sb.toString();
}

3. 支援對象嵌套集合

檢測字段值若為 List,遞歸遍歷子對象字段(getJsonStrByObjectToList)。

4. Map 驅動多集合

以 Map<String, List> 為入參,鍵作 JSON 數組名,值為集合(getJsonStrByMap)。

5. FastJSON 一鍵序列化

public static String toJSONString(Object obj) {
    return JSON.toJSONString(obj); // com.alibaba.fastjson.JSON
}

其他輔助

  • 編碼檢測 getEncoding(str)
  • 請求參數驗證/解密/簽名校驗 reqJsonStr
  • XML 解析、會員號轉換等業務工具
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved