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