ajax传输JSON数组

最近考试太多,好久没写了,今天正好解决了一个问题,写一下,如果能够给大家带来帮助更好
我后端用的是SSM框架,前端是基于Vue
先看一下前端请求的代码(方便我描述问题):

function submitData(){
    var data={
        // 开始的行数
        start:vExcel.startRow,
        // 匹配数据
        matchData:vExcel.nowData,
        // 用户选择的Excel表格文件路径
        filePath:vExcel.filePath
    }
    // 请求路径
    var url='attendance/importSQL.sose'
    callAxiosPost(url , data , columnSuc , fail)
}

callAxiosPost是我们自己封装的请求方法,这个根据自己情况更改,在这里可以看到,请求的数据有三个,其中第一个第三个是单纯的String或int类型,但是第二个是一个json数组(绑定的是i-table的值),这个数组我设置的属性有两个,一个是describe,一个是columnNum,在我写的这个页面中这两个属性是用户自己选择的,我在后端获取一定要是匹配的,我的本意是想后端直接转换成JSONArray或者JSONObject,然后通过getString(“describe”)方式获取值,但是不幸失败了

通过查询我找到了这么一种方式(先看一下代码):

// 导入Excel表格中数据到数据库
@ResponseBody
@RequestMapping(value = "/importSQL.sose", method = RequestMethod.POST, consumes = "application/json;charset=UTF-8")
public Map<String, Object> importSQL(@RequestBody String c, HttpServletRequest request) {
    java.util.Map<String, Object> map = new HashMap<>();
    try { 
        List<Relation> relationList = new ArrayList<Relation>();
        JSONObject strj = new JSONObject(c);
        // 获取读取Excel表格开始行数
        int start = strj.getInt("start");
        // 获取用户自定义匹配数据
        String json = strj.getJSONArray("matchData").toString();
        // 获取用户上传excel表格保存路径
        String filePath = strj.getString("filePath");
        // 将用户自定义匹配数据放入relationList中,便于取值
        relationList = com.alibaba.fastjson.JSONArray.parseArray(json, Relation.class);
    } catch (Exception e) {
        map.put("e", e);
    }
    return map;
}

嗯,这个方法是没写完的,但是matchData这个json数组已经获取到了
在这里我们需要用到一个工具类com.alibaba.fastjson.JSONArray.parseArray,具体的介绍可以上网百度,但是!!!使用这个方法有一个前提,Relation这个类的属性一定要大于等于你前端传过来的json数组,且属性名称一定要一致!!!!!!!
可以通过如下方式查看:

for(int i=0;i<relationList.size();i++){
    System.out.println(relationList.get(i).toString());
}

relationList.get(i). 后面会提示这个类的方法,也可以使用get方法进行取值

猜你喜欢

转载自blog.csdn.net/single_cong/article/details/80502188