【问题标题】:JSON parse error: Cannot deserialize instance of 'com.asc.project.service.dto.TaskDataDTO' [duplicate]JSON解析错误:无法反序列化'com.asc.project.service.dto.TaskDataDTO'的实例[重复]
【发布时间】:2021-05-11 04:37:53
【问题描述】:

我有这个错误:

JSON 解析错误:无法反序列化 com.asc.skyalign.service.dto.TaskDataDTO 出 START_ARRAY 令牌; 嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:不能 反序列化 com.asc.skyalign.service.dto.TaskDataDTO 的实例 START_ARRAY 令牌\n 在 [Source: (PushbackInputStream);线:10, 栏:21](通过参考链: com.asc.skyalign.service.dto.WorkOrderDTO["taskDataList"])

当发布Json API 时,这是我的请求:

    {
    "siteLocationLat": "35.123415",
    "workOrderID": "WO-1rmrud5gkdj4r0n6",
    "siteId": "NNA-12312312311",
    "siteAcessNotes": "No notes",
    "siteLocationLong": "128.910283984",
    "assignedTo": "ibrahem@test.com",
    "timeStamp": 1596738379102,
    "email": "ibrahem@test.com",
    "taskDataList": [
      {
        "roll": "2.0",
        "azimuth": "120.0",
        "tilt": "9.0",
        "sectorLocationLat": "35.123451",
        "amtImei": "35800121213",
        "wakeuUpInterval": "1440",
        "sectorID": "NNA-12312312311-1",
        "sectorLocationLong": "128.123123",
        "taskName": "Install AMT Sector A",
        "taskDescription": "Install AMT on Back of the Antenna"
      }
    ]
    
}

我的WorkOrderDto 是:

    public class WorkOrderDTO implements Serializable {   
 private  List<TaskDataDTO> taskDataList=new ArrayList<TaskDataDTO>();

    public List<TaskDataDTO> getTaskDataList() {
        return taskDataList;
    }
    public void setTaskDataList(TaskDataDTO taskDataDTO) {
        this.taskDataList.add(taskDataDTO);
    }
}

我的 WorkOrder 实体是:

public class WorkOrder implements Serializable {
    private  List<TaskData> taskDataList=new ArrayList<TaskData>();

    public List<TaskData> getTaskDataList() {
        return taskDataList;
    }

    public void setTaskDataList(TaskData taskData) {
        taskDataList.add(taskData);
    }
}
 

当运行我的应用程序并请求 api 并且在到达我的控制器之前,我在邮递员正文中看到了这个异常:

JSON 解析错误:无法从 START_ARRAY 令牌中反序列化 com.asc.skyalign.service.dto.TaskDataDTO 的实例; 嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:不能 反序列化 com.asc.skyalign.service.dto.TaskDataDTO 的实例 START_ARRAY 令牌\n 在 [Source: (PushbackInputStream);线:10, 栏:21](通过参考链: com.asc.skyalign.service.dto.WorkOrderDTO["taskDataList"])

Java Idea 终端中的这个错误:

错误请求:JSON 解析错误:无法反序列化 com.asc.skyalign.service.dto.TaskDataDTO 出 START_ARRAY 令牌; 嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:不能 反序列化 com.asc.skyalign.service.dto.TaskDataDTO 的实例 [来源:(PushbackInputStream)处的 START_ARRAY 令牌;线:10, 栏:21](通过参考链: com.asc.skyalign.service.dto.WorkOrderDTO["taskDataList"])

【问题讨论】:

  • 您需要在此处包含任务数据 dto 类以提供帮助 - 这就是您的错误所在

标签: java spring spring-boot postman


【解决方案1】:
public void setTaskDataList(TaskDataDTO taskDataDTO) {
        this.taskDataList.add(taskDataDTO);
 }

对我来说很奇怪,您说您设置了任务数据列表,并且您在参数中有一个 taskDataDto 将其添加到列表中。 WorkOrderDto taskdatalist getter 和 setter 应该是这样的

@JsonProperty("taskDataList")
public List<TaskDataList> getTaskDataList() { return taskDataList; }

@JsonProperty("taskDataList")
public void setTaskDataList(List<TaskDataList> value) { this.taskDataList = value; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-13
    • 2020-12-10
    • 2020-04-03
    • 2020-07-14
    • 1970-01-01
    • 2020-03-09
    • 2020-04-18
    • 2018-01-21
    相关资源
    最近更新 更多