新项目,前端老哥用的angela框架

后端方法上一定要加个@Responsebody注解才能连通..

加上后,发现我后端postman测试的时候老出错误:

首先出现错误是这样的:

"error": "Unsupported Media Type",
"exception": "org.springframework.web.HttpMediaTypeNotSupportedException",
"message": "Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported",

然后把请求的类型的header改成这样:

使用以下Json格式解决后

又出现了下面的错误:

Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Can not deserialize instance of com.****.****.****.**** out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of com..****.****.****.**** out of START_ARRAY token
 at [Source: java.io.PushbackInputStream@1a7e14f1; line: 1, column: 1]

之前解决过一次..中间过了好长时间竟然忘了怎么解决的了.. 

好记性不如烂笔头..

解决后还是记下来..

方法1: 给相关的类添加无参构造方法;    不起作用

方法2: 使用ObjectMapper处理复杂类型

String cols="[{'id':'3'},{'id':'3'}]";
ObjectMapper mapper = new ObjectMapper();
JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, Bean.class);
//Map类型  
mapper.getTypeFactory().constructParametricType(HashMap.class,String.class, Bean.class);
List<Bean> lst =  (List<Bean>)mapper.readValue(cols, javaType); 

-------------------------------------------------------------------
String jsonString="[{'id':'1'},{'id':'2'}]";
ObjectMapper mapper = new ObjectMapper();
List<Bean> beanList = mapper.readValue(jsonString, new TypeReference<List<Bean>>() {}); 

上次解决的时候用过, 没有解决我的问题, 证明问题不是出在这..

方法3: 更改入参的json格式

我之前在postman使用的json格式是:

--这个是json的数组格式
[{
    "pageIndex":1,
    "pageSize":6
}]

是不对的.. 参数并不是数组..

改成这样的:

{
    "pageIndex":1,
    "pageSize":6
}

所有问题都解决了...

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐