zoukankan      html  css  js  c++  java
  • vue 数组作为请求参数,后台接收不到?

    vue+axios请求数据,以数组作为参数时。Qs.stringfly和Qs.parse方法都试过,后台接收到的数据大小还是为0.

    以如下代码,后台可以接收到。

    1 let param =  new URLSearchParams();
    2 param.append('threshold_data',JSON.stringify(this.data));
    3 param.append('ip',this.ip);
    4 ...
    5 axios({
    6     ...
    7     data: param
    8 })

    参考文档:https://download.csdn.net/download/weixin_38628211/13658162

    但后台接收到的数据数组的外边会再多一个[],而且get(0)方法得到结果为第一个逗号为止,而不是数组第一个数据项。也就是说后台能得到,但数据结构其实是不对的。

    最后多次试验得到正确方法:

    1 let data = {threshold_data:this.data,ip:this.ip}
    2 ...
    3 axios({
    4     ...
    5     data: Qs.stringify({jsonStr: JSON.stringify(data)})
    6 })

    也就是说axios的data还是要正常的Qs进行序列化,但其中有数组在的原因,要再进行一次json转换,后台才能正常识别。

    后台把其当作一个字符串来接收,而不是实体类。

    后台参考文档:Java后台接收前端传递的数组对象参数的处理 by:freshman2020 @csdn(这其中的前端部分经测试是无效的。要再加一次Qs序列化,如上边代码)

     1 @PostMapping(value = 'url',produces = "application/json")
     2 public void upsertXxx(String jsonStr) {
     3     // 这里使用的alibaba的fastjson包
     4     // 先将字符串转换为JSON对象
     5     JSONObject jsonObj = JSONObject.parseObject(jsonStr);
     6     // 使用toJavaObject()方法将其转换为Xxx对象
     7     // Xxx对象中的list集合也会得到相应的值
     8     Xxx xxx= jsonObj.toJavaObject(Xxx.class);
     9     ...
    10     // 业务实现
    11     ...
    12 }
  • 相关阅读:
    C#画K线图代码
    SQL查询效率:100w数据查询只需要1秒钟
    全程图解 手把手教你做RAID磁盘阵列
    炒股高手实战技巧
    数据库主键设计之思考
    如何做磁盘阵列和磁盘镜象
    股海心法—浓缩股市精华
    如何做磁盘阵列
    SQL Server 2005实现负载均衡的详细介绍!
    K线六种形态
  • 原文地址:https://www.cnblogs.com/bjhl/p/14448461.html
Copyright © 2011-2022 走看看