JSON parse error: Cannot deserialize instance of `object` out of START_ARRAY token
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `object` out of START_ARRAY token
问题背景
详细的问题背景接上一篇博文Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported 下面我们来解决上一篇博文中处理好ajax content-type报错问题之后的另一个问题
报错信息
报错信息内容如下
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `com.dongao.project.tmupgradeorderrecord.domain.TmUpgradeOrderRecord` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.dongao.project.tmupgradeorderrecord.domain.TmUpgradeOrderRecord` out of START_ARRAY token
at [Source: (PushbackInputStream); line: 1, column: 1]
这个报错信息的意思翻译过来也就是说:无法从START_ARAY令牌中反序列化“后端controller接收参数对象”的实例,简单理解就是前端传json参数到后端,在映射到对象字段的时候报错,那么这个问题怎么处理呢?
问题处理
首先我们需要知道前端传参的json格式是否是正确的格式,前端数据内容我们通过在页面添加console.log(data);打印在控制台
[{"name":"phone","value":"3"},{"name":"gwUserName","value":"3"},{"name":"orderNo","value":"1"},{"name":"deductionGoodsIds","value":"1"},{"name":"orderNo","value":"2"},{"name":"deductionGoodsIds","value":"2"},{"name":"gwlist","value":[{"orderNo":"1"},{"orderNo":"2"},{"orderNo":""}]}]
然后我们把入参放入到json格式化工具中可以看到前端数据可以正常转为json结构,说明数据没有问题
那么前端数据没有问题,但是后端报错反序列化问题,那么问题出在哪儿呢?这里我们再来看一下ajax 传参json格式数据的展示
在对比我们往后端传的参数可以观察到前后端多了“[”“]”,下面我们需要改造$(‘#form-tmUpgradeOrderRecord-add’).serializeArray();方法
代码改造
这里我们改造后的代码
// 获取form下所有的字段并转换为json对象
formToJSON: function(formId) {
var json = {};
$.each($("#" + formId).serializeArray(), function(i, field) {
json[field.name] = field.value;
});
return json;
}
改造页面代码
页面json入参控制台打印
{"phone":"3","gwUserName":"3","orderNo":"2","deductionGoodsIds":"2","gwlist":[{"orderNo":"1"},{"orderNo":"2"},{"orderNo":""}]}
此时的json入参已经没有前后的“[ ]”符号了,后端可以正常解析json入参到对象字段。
后端controller debug可以看到接收入参的对象中已经可以成功收到子表list数据了
至此,整个这关于前端json传参,后端解析json参数反序列化到对象的操作就算完成了,大功告成,后面就可以开心丰富业务逻辑内容了。
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
3 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献7条内容
所有评论(0)