<script type="text/javascript">
$(document).ready(function(){
var saveDataAry=[];
var data1={"userName":"test","address":"gz"};
var data2={"userName":"ququ","address":"gr"};
saveDataAry.push(data1);
saveDataAry.push(data2);
$.ajax({
type:"POST",
url:"user/saveUser",
dataType:"json",
contentType:"application/json",
data:JSON.stringify(saveData),
success:function(data){
}
});
});
</script>
使用ajax传json数组的时候 JSON.stringify(saveData)表示把 saveData 序列化成 字符串
使用F12 –> 点击Network -> 鼠标点击请求 可以看到 Headers中有传过去的参数
1.在url中 "?"拼接的属性放在Query String Parameters 中 这类数据在后台 request.getParameter(“key”)的方式获取;
2. data中传的参数放在 Request Payload 中 这类数据要使用流的方式获取 下面介绍两种方式:
Method1:
private String getStringFromStream(HttpServletRequest req) {
ServletInputStream is;
try {
is = req.getInputStream();
int nRead = 1;
int nTotalRead = 0;
byte[] bytes = new byte[10240];
while (nRead > 0) {
nRead = is.read(bytes, nTotalRead, bytes.length - nTotalRead);
if (nRead > 0)
nTotalRead = nTotalRead + nRead;
}
String str = new String(bytes, 0, nTotalRead, "utf-8");
return str;
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
Method2:
private String getRequestPayload(HttpServletRequest req)
{
StringBuilder sb = new StringBuilder();
try(BufferedReader reader = req.getReader();)
{
char[]buff = new char[1024];
int len;
while((len = reader.read(buff)) != -1)
{
sb.append(buff,0, len);
}
}catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
获取到的是String字符串 之后可以根据具体数据类型进行转译
如上图可以知道这是一个数组 每个数组可以解析成一个bean
List<Customized> list1 = new ArrayList();
// 先把json 字符串转换为json 数组
JSONArray jsonArray1 = JSONArray.fromObject(customized);
//循环获取json数组中的 json 对象,然后转换为 object
for (int i = 0; i < jsonArray1.size(); i++)
{
JSONObject jsonObject2 = jsonArray1.getJSONObject(i);
Customized cust = (Customized) JSONObject.toBean(jsonObject2, Customized.class);
list1.add(cust);
}