【问题标题】:JSON parse error: Cannot deserialize instance of ArrayListJSON 解析错误:无法反序列化 ArrayList 的实例
【发布时间】:2020-12-10 03:45:00
【问题描述】:

我正在尝试将 JSON 发送到 POST bodyRequest 服务,以将此信息用作 Java ArrayList 或类似的东西。当我尝试这样做时,我收到一个反序列化错误

这是我的 JSON:

{信息:[{字段:“提供的期间”,表格:“课程”, 列:“学术水平*”},{字段:“默认评分基础*”, 表:“课程”,列:“默认课程百分比”},{字段: “允许的地点”,表格:“课程”,列:“允许提供”} ] }

这是我的 POST bodyRequest 服务

@ResponseBody
@PostMapping("/dataMapping/update/table")

public ResponseEntity<Object> updateDataMappingTable(@RequestBody List<UpdateDataMapping> information) {

    try {
        String update = this.dataMappingService.update(information);
        return new ResponseEntity<Object>(update, HttpStatus.OK);
    } catch (Exception e) {
        Response response = new Response();
        response.setError(e.getMessage());
        return new ResponseEntity<Object>(response, HttpStatus.OK);
    }
}

我的 UpdateDataMapping 类如下所示:

public class UpdateDataMapping {

    public String fields;
    public String tables;
    public String columns;

    public UpdateDataMapping() {

    }

    public UpdateDataMapping(String fields, String tables, String columns) {
    
        this.fields = fields;
        this.tables = tables;
        this.columns = columns;
    }

    public String getFields() {
        return fields;
    }

    public void setFields(String fields) {
        this.fields = fields;
    }

    public String getTables() {
        return tables;
    }

    public void setTables(String tables) {
        this.tables = tables;
    }

    public String getColumns() {
        return columns;
    }

    public void setColumns(String columns) {
        this.columns = columns;
    }
}

这是我的错误:

.w.s.m.s.DefaultHandlerExceptionResolver:已解决 [org.springframework.http.converter.HttpMessageNotReadableException:JSON 解析错误:无法反序列化 java.util.ArrayList&lt;com.kastech.model.UpdateDataMapping&gt; 的实例,超出 START_OBJECT 令牌;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize of java.util.ArrayList&lt;com.kastech.model.UpdateDataMapping&gt; out of START_OBJECT token 在 [来源:(PushbackInputStream);行:1,列:1]]

如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 不要将文本/代码发布为图像/链接 (more info)。使用edit 选项更正您的帖子。
  • 你能发布你得到的异常吗?您的 UpdateDataMapping 类中有公共 getter 和 setter 吗?您写道,您有一个名为 fileds 的类成员,但在您尝试发送到服务器的 JSON 中,没有具有该名称的字段(fieldsfileds 不同)

标签: java json post serialization jackson


【解决方案1】:

您的 JSON 示例显示您的数组是在 information 对象中传递的。您看到当前堆栈跟踪是因为 Jackson 无法找到反序列化您的请求负载的适当方法。

或者,您可以将请求 JSON 更改为简单的列表

[ {fields: "Periods Offered", tables: "Courses", columns: "Academic Level*"}, {fields: "Default Grading Basis*", tables: "Courses", columns: "Default Offering Percentage"}, {fields: "Allowed Locations", tables: "Courses", columns: "Allowed to Offer"} ]

或者你可以有一个 POJO 代表 information 对象

class UpdateMappingList {
    List<UpdateDataMapping> information;
    ...
}

【讨论】:

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