关于接口接收一个集合作为参数后,测试时的异常

发布时间:2024年01月08日

情景再现:

接口

@PostMapping("/aa")
public String setDoubtList(@RequestBody List<user> userList){
        //接收一个list<user>,
        return userService.setUserList(userlist);
    }

测试接口时传入body内容

{
    "user":[
        {
            "name":"aa",
            "sex":"男",
            "age":"14"
        },
        {
            "name":"ba",
            "sex":"女",
            "age":"24"
        },
        {
            "name":"za",
            "sex":"男",
            "age":"13"
        },
    ]
}

报错

JSON parse error: Cannot deserialize value of type `java.util.ArrayList<com.*****>` from Object value (token `JsonToken.START_OBJECT`); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<com.****>` from Object value (token `JsonToken.START_OBJECT`)

JSON parse error通常表示JSON格式的数据无法被正确解析。这可能是由于以下原因之一:

  1. JSON格式不正确:如果JSON数据格式不正确,例如缺少引号、括号或逗号等,那么解析器就无法正确解析数据。
  2. JSON数据类型不正确:如果JSON数据类型不正确,例如尝试将一个字符串转换为数字或布尔值,那么解析器就无法正确解析数据。
  3. JSON数据嵌套不正确:如果JSON数据嵌套不正确,例如尝试将一个对象放在另一个对象的属性值中,那么解析器就无法正确解析数据。
  4. JSON数据太大:如果JSON数据太大,超出了解析器的最大限制,那么解析器就无法正确解析数据。

报错原因

  1. json和映射的user中的数据类型不一致
    如:age可能是int型,json就要这样写? ? ? ? "age":13? ? ? ? 没有引号了
    double类型也是这样,要注意不能用科学计数的方式写
  2. 传入参数的json格式不对
    正确的,泛型设置好,会自己放进去,不用在json中体现
    [
        {
            "name":"aa",
            "sex":"男",
            "age":"14"
        },
        {
            "name":"ba",
            "sex":"女",
             "age":"24"
         },
         {
             "name":"za",
             "sex":"男",
             "age":"13"
         },
    ]
    
文章来源:https://blog.csdn.net/missmoonlight/article/details/135453819
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。