Java中使用Postman传递JSONObject类型参数报错的原因是什么
报错产生原因
- 你当前项目使用的JSON反序列化框架(Spring生态默认使用Jackson)将
org.json.JSONObject识别为普通Java POJO类处理,反序列化时会尝试将请求JSON中的键与目标类的属性、setter方法做映射匹配。org.json.JSONObject本身没有和请求中的pepsi字段对应的属性或setter方法,因此触发了未识别字段异常。 org.json.JSONObject不属于Jackson原生支持的动态JSON类型,因此框架不会把传入的嵌套JSON结构直接封装为JSONObject实例,而是按照普通POJO的规则校验字段合法性。
可选解决方案
- 替换字段类型为Jackson原生支持的动态JSON类型
com.fasterxml.jackson.databind.JsonNode,无需额外配置即可接收任意结构的JSON对象:
public class FieldProviderDTO { private JsonNode information; public JsonNode getInformation() { return information; } public void setInformation(JsonNode information) { this.information = information; } }
- 替换字段类型为
Map<String, Object>,也可以动态接收任意键值对结构的JSON数据。 - 若必须使用
org.json.JSONObject,需额外引入jackson-datatype-json-org依赖,并将该模块注册到Jackson的全局反序列化配置中,即可让Jackson支持org.json类型的转换。
内容的提问来源于stack exchange,提问作者Hans
相关产品推荐
相关产品推荐

