前端請求進入后端控制器報錯【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('保存失敗') })
這樣就解決了報錯問題,后端控制器也能正常接收參數了。
"后來我才知道,那不是我的花,我只是途徑了它的盛放。"