You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSON数组反序列化失败求助:无法将数组转为POJO实例

问题分析与解决方案

错误原因

返回的JSON是数组结构(用[]包裹),但你尝试将其反序列化为单个pojode对象,Jackson无法将数组转换为单个对象,因此抛出MismatchedInputException。

步骤1:修正POJO类

首先调整POJO的字段类型(JSON中id/disponibilita/prezzo是数字类型,建议用对应类型避免转换问题),并确保类的访问权限和必要的构造、方法:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

// 忽略JSON中不存在的字段(比如titolo),避免反序列化报错
@JsonIgnoreProperties(ignoreUnknown = true)
public class pojode {
    private Integer id;
    private Integer prezzo;
    private Integer disponibilita;
    private String titolo;

    // Jackson必须的无参构造函数
    public pojode() {}

    // Getter和Setter方法
    public Integer getId() { return id; }
    public void setId(Integer id) { this.id = id; }

    public Integer getPrezzo() { return prezzo; }
    public void setPrezzo(Integer prezzo) { this.prezzo = prezzo; }

    public Integer getDisponibilita() { return disponibilita; }
    public void setDisponibilita(Integer disponibilita) { this.disponibilita = disponibilita; }

    public String getTitolo() { return titolo; }
    public void setTitolo(String titolo) { this.titolo = titolo; }
}

步骤2:修改反序列化代码

将JSON数组反序列化为List<pojode>集合,而不是单个对象:

import com.fasterxml.jackson.core.type.TypeReference;
import java.util.List;

// 反序列化为List集合
List<pojode> pojList = given().relaxedHTTPSValidation()
        .header("Content-Type", "application/json")
        .header("customerId", "xxx")
        .header("S2S-Authorization", res4)
        .expect().defaultParser(Parser.JSON)
        .when().get("xxx")
        .then().log().all()
        .extract().response().as(new TypeReference<List<pojode>>() {});

// 遍历集合输出数据
for (pojode item : pojList) {
    System.out.println("ID: " + item.getId());
    System.out.println("价格: " + item.getPrezzo());
    System.out.println("库存: " + item.getDisponibilita());
}

额外注意事项

  • POJO类必须是public权限,否则Jackson无法反射实例化。
  • 如果坚持用String类型存储数字字段,Jackson也能兼容,但可能存在隐式转换风险,建议优先使用对应数据类型。

内容的提问来源于stack exchange,提问作者Krishna Sriram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:25:07