Cannot deserialize instance of `java.lang.String` out of START_OBJECT token

2021/11/13 9:10:06

本文主要是介绍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('保存失败')
})

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

 

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



这篇关于Cannot deserialize instance of `java.lang.String` out of START_OBJECT token的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程