vue qs.stringify 和JSON.stringify 区别

121 篇文章 3 订阅

最近和前端联调是出现参数结构问题,下面就遇到的问题进行记录——由于本人非后台开发人员,所以一些前端代码只做记录不做详细解释

前端技术参考地址已经附加在下文,请尊重原创

后台参数接收格式

@RequestBody List<Long> idList
或者
@RequestBody Long[] idList
前台传递格式

复制代码

let idLists = [];
that.checkBoxData.forEach(function(e) {
  idLists.push(e.consumeId);
});
API.stop(idLists)
  .then(
    function(result) {
      that.loading = false;
      if (result && parseInt(result.code) === 0) {
        that.$message.success({
          showClose: true,
          message: "停用成功",
          duration: 1500
        });
        that.search();
      }
    },
    function(err) {
      that.loading = false;
      that.$message.error({
        showClose: true,
        message: err.toString(),
        duration: 2000
      });
    }
  )

复制代码

如果后台传参为

@RequestParam("supplierMaterialids[]") Long[] supplierMaterialids

则前端传参格式——红色部分

复制代码

 stopStatus:function (){
        this.hospitalsupplieridarr=[];
        let that = this;
          if(this.checkBoxData.length<1)
        {
            this.$message.error({
                  showClose: true,
                  message: "请选择一条数据进行停用",
                  duration: 2000
                });
        }else{
          for(var i=0;i<this.checkBoxData.length;i++)
          {
            this.hospitalsupplieridarr.push(this.checkBoxData[i].supplierrelationshipid)
          }
          let params = qs.stringify(
            {hospitalSupplierids:this.hospitalsupplieridarr},{ arrayFormat: 'brackets' });
          this.$confirm("确认停用供应商吗?", "提示", {type: "warning"})
          .then(() => {
        API.setHospitalSupplierStopStatus(params).then(res => {
              if (res.code === 0) {
                that.$message.success({
                  showClose: true,
                  message: "停用成功",
                  duration: 2000
                });
                that.search(1);
              } else {
                that.$message.error({
                  showClose: true,
                  message: "停用失败",
                  duration: 2000
                });
              }
            });
        }).catch(() => {
          });
        }
     },

复制代码

下面是网上查的资料关于——vue  qs.stringify 和JSON.stringify 区别

参考链接——https://www.cnblogs.com/web1/p/8659398.html

qs可通过npm install qs命令进行安装,是一个npm仓库所管理的包。

而qs.stringify()将对象 序列化成URL的形式,以&进行拼接。

JSON是正常类型的JSON,请对比一下输出

var a = {name:'hehe',age:10};
 qs.stringify(a)
// 'name=hehe&age=10'
JSON.stringify(a)
// '{"name":"hehe","age":10}'

 

其中qs 分为三种类型——参考链接https://blog.csdn.net/pifutan/article/details/86320705

复制代码

qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘indices‘})
//形式: ids[0]=1&aids1]=2&ids[2]=3

qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘brackets‘})
//形式:ids[]=1&ids[]=2&ids[]=3

qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘repeat‘})
//形式: ids=1&ids=2&id=3

复制代码

对比:

 

 

总结:使用List<Long>和Long[]是没有区别的,区别在于@RequestParam中是否加[]

复制代码

qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘indices‘})

//形式: ids[0]=1&aids[1]=2&ids[2]=3 @RequestParam无法接收
 

qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘brackets‘})

//形式:ids[]=1&ids[]=2&ids[]=3 要加[]


qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘repeat‘})

//形式: ids=1&ids=2&ids=3 不能加[]

复制代码

附录:

最近在用vue2.x做项目,说实话,项目比较赶不吃力那肯定是假的。这里顺带吐槽一下二线城市东莞,我之前待的城市。深圳很多新技术打得火热,东莞还是有点滞后呐。言归正传,说说 qs.stringify和JSON.stringify

 

qs可通过npm install qs命令进行安装,是一个npm仓库所管理的包。

而qs.stringify()将对象 序列化成URL的形式,以&进行拼接。

JSON是正常类型的JSON,请对比一下输出

例如

var a = {name:'hehe',age:10};
 qs.stringify(a)
// 'name=hehe&age=10'
JSON.stringify(a)
// '{"name":"hehe","age":10}'

 

都是把对象的类型转换成另外一种类型,如果并没有qs的这种需求,还是继续用JSON吧

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值