首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Servlet 接收 AJAX 表單數據轉 JSON:手動解析 application/x-www-form-urlencoded 格式

     編輯:程式設計疑難解答

問題背景

前端 AJAX 發送 data: {entryId:30, albumId:410, ...},但 Servlet 接收到的請求體為 entryId=30&albumId=410&content=check+update+last+one+second(表單編碼格式),非 JSON,導致 Fastjson/Gson 解析報錯。

解決方案:手動分割鍵值對構建 Map

public void testParseJson() {
    String formData = "entryId=30&albumId=410&content=check+update+last+one+second";
    String[] pairs = formData.split("&");
    Map map = new HashMap<>();
    for (String pair : pairs) {
        String[] kv = pair.split("=");
        if (kv.length == 2) {
            // 處理 URL 解碼:+ 轉空格,%XX 還原
            map.put(URLDecoder.decode(kv[0], "UTF-8"),
                    URLDecoder.decode(kv[1], "UTF-8"));
        }
    }
    // 轉 JSON
    String json = JSONObject.toJSONString(map); // Fastjson
    System.out.println(json);
}

關鍵點

  • 前端若用 contentType: 'application/json' 且 JSON.stringify(data),後端可直接用 request.getReader() 讀取 JSON 流。
  • 若後端用 @RequestBody (SpringMVC) 自動綁定需匹配 Content-Type。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved