1.前端封装数据
let arr=[]
res.data.results.forEach(element => {
let json={
"id":element.uid,
"name":element.name,
"province":element.province,
"area":element.area,
"city":element.city,
"address":element.address,
"lat":element.location.lat,
"lng":element.location.lng
}
arr.push(json)
that.setData({
array:arr
})
});
2.发送请求到后端
wx.request({
url: 'http://localhost:8080/BD_war_exploded/venues/addBatch',
data:JSON.stringify(that.data.array),
dataType:'json',
method:"POST",
contentType: 'application/json;charset=utf-8',
success:res=>{
console.log(res.data)
}
})
3.后端接收数据
@PostMapping(value = "addBatch")
public Response testPost(@RequestBody String[] array) throws IOException {
List<Venues> venuesList = new ArrayList<Venues>();
for (String s : array
) {
JSONObject jsonObject = JSONObject.parseObject(s);
Venues v = new Venues();
v.setArea(jsonObject.getString("area"));
v.setAddress(jsonObject.getString("address"));
v.setProvince(jsonObject.getString("province"));
v.setLng(jsonObject.getString("lng"));
v.setCity(jsonObject.getString("city"));
v.setName(jsonObject.getString("name"));
v.setId(jsonObject.getString("id"));
v.setLat(jsonObject.getString("lat"));
venuesList.add(v);
}
boolean flag = service.saveBatch(venuesList);
if (flag) {
return new Response(200, true, "批量上传成功", null);
}
return new Response(201, false, "批量上传失败", null);
}
注意事项
1.使用String[]接收
2.将String类型数据转为json对象
3.在使用List.add()方法时,如果要添加的参数在for循环外部实例化,那么每次引入的都是同一个内存地址,就会造成添加到数组里的都是最后一个对象,所以需要在for循环内部声明并创建新的类对象即可。
如何取json对象里的数组
//取出json对象里的数组
JSONArray photos = jsonObject.getJSONArray("photos");
//创建StringBuilder对象
StringBuilder sb = new StringBuilder();
//for循环读取数组,并赋值给sb
for (int i = 0; i < photos.size(); i++) {
JSONObject object = JSON.parseObject(photos.getString(i));
String url = object.getString("url");
if (sb.length() > 0) {//该步即不会第一位有逗号,也防止最后一位拼接逗号!
sb.append(",");
}
sb.append(url);
}