zoukankan      html  css  js  c++  java
  • Cannot deserialize instance of `java.lang.String` out of START_OBJECT token

    前端请求进入后端控制器报错【Cannot deserialize instance of `java.lang.String` out of START_OBJECT token】,从错误信息上看是json解析错误,对比下前端请求发送内容和后端控制器接收参数即可发现问题。

    前端发送内容:

    api_save(JSON.stringify({
      po: this.form
    })).then(response => {
      if (response.code === 200) {
        this.$message.success('保存成功')
        this.$emit('saved')
      }
    }).catch(() => {
      this.$message.error('保存失败')
    })

    后端控制器接收参数:

    @PostMapping("/save")
    public Return<?> save(@RequestBody Map<String, String> paramMap) {
        try {
            service.save(JSON.parseObject(paramMap.get("po"), ProgEbs.class));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return Return.success("保存成功");
    }

    对比后发现前端发送请求是对象,而后端控制器接收参数是字符串,因此在控制器后端进行json解析错误了,这时候只要把前端发送请求内容调整成json字符串或者后端控制器接收参数调整为Object对象即可。

    这里使用的前者:

    api_save(JSON.stringify({
      po: JSON.stringify(this.form)
    })).then(response => {
      if (response.code === 200) {
        this.$message.success('保存成功')
        this.$emit('saved')
      }
    }).catch(() => {
      this.$message.error('保存失败')
    })

    这样就解决了报错问题,后端控制器也能正常接收参数了。

    "后来我才知道,那不是我的花,我只是途径了它的盛放。"

    你要去做一个大人,不要回头,不要难过。
  • 相关阅读:
    Flink 1.14 新特性预览
    基于 MaxCompute 的实时数据处理实践
    Serverless 工程实践 | 细数 Serverless 的配套服务
    不得不看!虚拟货币和区块链的关系
    美国华尔街拥抱区块链是最大的威胁
    1.图片底部圆弧
    二、快捷键
    三、ASP.NET Core 部署Linux
    一、.NET Core MVC 项目结构模板
    一、纯css实现顶部进度条随滚动条滚动
  • 原文地址:https://www.cnblogs.com/yanggb/p/15539571.html
Copyright © 2011-2022 走看看