银翼的魔术师s
2019-06-07 12:25
采纳率: 69.1%
浏览 2.6k

vue 和 springboot 传输 复杂数据类型 传输数组,数组里有对象

我想在 在前端 axios传递 shop_Request对象的数组
在springboot接收 list 要怎么办呢
看了一上午网上的办法还是失败 绝望呀,可以写一下吗

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qsx286894 2019-06-07 19:20
    已采纳

    axios传复杂数据类型,你用qs就行了,现在版本的axios自带qs,在用axios的地方import qs就可以用它了,他会处理数据的,你用了之后可以看看你在后台接收到的是什么。
    我的JAVA后端都是拿的我qs处理后的数据。
    之前我都是把复杂数据类型用JSON.stringify字符串化再传递的。

    点赞 评论
  • 懵懵的小哥 2019-06-07 14:09

    建议楼主使用fastjson解析参数:
    pom添加依赖:

    <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.58</version>
            </dependency>
    

    controller方法添加@ResquestBody注解,可以参考我的,参数类型为JSONArray(JSON数组),这样就可以解析包含对象的数组了
    我的测试用例:
    前端请求:

    data=[{'Name':'lee','Age':'23'},{'Name':'zhang','Age':'22'}]
                    axios.post('http://localhost:8080/test', data)
                        .then(res => {
                            document.write(res.data)
                        })
    

    controller:

    @RestController
    public class TestData {
        @RequestMapping("/test")
         public String  showMessage(@RequestBody JSONArray   paramArray) {
               JSONObject O1 = paramArray.getJSONObject(0);
               JSONObject O2 = paramArray.getJSONObject(1);
    
               StringBuffer  stringBuffer = new StringBuffer();
               stringBuffer.append("Name :" + O1.getString("Name"))
                           .append("   ")
                           .append("Age: " + O1.getString("Age"))
                           .append("&&")
                           .append("Name: " + O2.getString("Name"))
                           .append("   ")
                           .append("Age: "+O2.getString("Age"));
    
               return   stringBuffer.toString();
         }
    }
    

    返回结果:
    图片说明


    如果楼主感觉我的方法可以解决你的问题,可以给我C币吗?(^^)

    点赞 评论

相关推荐 更多相似问题