post请求 参数json序列化报错: cannot deserialize from Object value
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了post请求 参数json序列化报错: cannot deserialize from Object value相关的知识,希望对你有一定的参考价值。
参考技术A 项目里调用一个post的请求,requestBody请求实体中包含一个List<对象>参数,对象中有一个有参构造器,在调用接口时就出现了报错,如下错误堆栈信息:
报错信息中就指向List<ChangeInfo>这个参数,解决方式就是在ChangeInfo这个对象中增加一个无参构造器,因为对象中有有参构造器,无参构造器就被覆盖掉了,所以需要增加一个无参构造器,spring boot在调接口时 对参数实体类进行反序列化,需要对象中有无参构造器。 所以造成报错的原因就是反序列化中没找到对象中无参构造器导致。
python Django post方法报错
linux安装的django,用django自带的服务器,凡是遇到post传值时都报错。如下:403 Forbidden CSRF verification failed. Request aborted. Help Reason given for failure: No CSRF or session cookie.下面的提示信息太多就不放了。有知道原因的能否告知一声,分上次都捐出去了,没有分可以悬赏了。多谢各位。
关于django的POST常见方法:1.用post方法去取form表单的值
在取值前,先得判断是否存在这个key
if not request.POST.has_key(strName):
return ""
if request.POST[strName]:
return request.POST[strName]
else:
return ""
2.用post方法获取[]类型的数据
常见的,例如,每行数据前面都带个checkbox的操作。这时候可能会选多个checkbox,传入到后台时,如果用request.POST[strname]获取,那么只能获取到一个值。用下面的方法,可以获取到多值。
if not request.POST.has_key(strName):
return ""
if request.POST[strName]:
return \',\'.join(request.POST.getlist(strName))
else:
return "" 参考技术A django有自带的CSRF保护,你需要在你的form元素的后面加上% csrf_token %,然后在处理template的时候用 RequestContext代替Context。 参考技术B 你可以在settings里csrf禁掉就好了
以上是关于post请求 参数json序列化报错: cannot deserialize from Object value的主要内容,如果未能解决你的问题,请参考以下文章
HTTP 请求,POST方式,把一个对象序列化成JSON样式作为参数访问服务器
糊涂工具类(hutool)post请求设置body参数为json数据
Requests库发送post请求,传入接口参数后报JSON parse error