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

使用Jackson将JSON数组反序列化为POJO时遭遇构造器缺失错误的技术求助

解决Jackson反序列化"No Creators exist"报错的方案

嘿,这个问题我之前也踩过坑!咱们一步步来搞定它:

首先得明确两个关键问题:你的JSON格式有语法错误,以及Jackson找不到合适的构造器来创建Students实例,这两个点都得修正才能正常运行。

先修正JSON字符串的错误

你写的{"name" : [{"John" , "Mark"}]}是非法的JSON:

  • 数组里的字符串元素需要用双引号包裹,元素间用逗号分隔
  • 你把数组写成了包含一个非法对象{"John", "Mark"}(对象必须是键值对格式)

正确的JSON应该是这样:

String json = "{\"name\" : [\"John\", \"Mark\"]}";
// 或者Java 15+用文本块更清晰:
String json = """
              {"name" : ["John", "Mark"]}
              """;

解决构造器缺失的问题

报错No Creators, like default constructor, exist的核心原因是:Jackson默认需要通过无参构造器创建POJO实例,再用Setter方法给字段赋值;但你的Students类只定义了带参构造器,Jackson不知道怎么实例化对象。

这里有三种常用的解决方案:

方案1:添加无参构造器+Getter/Setter

这是最通用的做法,给Students类补充无参构造器,以及字段的Getter和Setter方法:

public class Students {
    String[] name;
    
    // 新增无参构造器
    public Students() {}
    
    public Students(String[] name) {
        this.name = name;
    }
    
    // 新增Getter和Setter
    public String[] getName() {
        return name;
    }
    
    public void setName(String[] name) {
        this.name = name;
    }
}

Jackson会先调用无参构造创建对象,再通过setName方法把JSON里的数组赋值给字段。

方案2:用@JsonCreator和@JsonProperty注解指定带参构造器

如果不想加无参构造器,可以通过注解告诉Jackson直接使用你的带参构造器:

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Students {
    String[] name;
    
    @JsonCreator // 标记这是Jackson可用的构造器
    public Students(@JsonProperty("name") String[] name) {
        // @JsonProperty指定JSON中的"name"字段映射到这个构造参数
        this.name = name;
    }
    
    // 可选:添加Getter方便后续业务使用
    public String[] getName() {
        return name;
    }
}

这样Jackson会直接调用这个带参构造器,把JSON里的"name"数组传入创建实例。

方案3:用Lombok简化代码(如果项目中使用Lombok)

如果你的项目已经引入了Lombok,可以用@Data注解自动生成无参构造器、Getter、Setter等方法,代码会非常简洁:

import lombok.Data;

@Data
public class Students {
    String[] name;
}

@Data注解会帮你生成所有Jackson需要的方法,不需要手动写构造器和Getter/Setter。

把这两个问题(JSON格式+构造器)都处理完,你的反序列化代码就能正常运行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 19:57:39