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('保存失敗')
})

這樣就解決了報錯問題,后端控制器也能正常接收參數了。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM