使用 Objectmapper 将 JSON 数据转换为 Java 类时出现 MismatchedInputException

问题描述

我想使用jackson将这样的json数据加载到我的java程序中:

[
   {
      "id":1246524522,"version":50,"createdOn":"2020-09-30T12:22:53.785+0000","createdBy":"me","lastModifiedOn":"2020-09-30T12:22:53.785+0000","name":"Unused Template","description":"Template"
   },{
      "id":10739765484,"version":70,"createdOn":"2020-12-21T11:39:51.941+0000","createdBy":"creator","lastModifiedOn":"2020-12-21T11:39:51.941+0000","name":"TestTag202006","description":""
   }
]

我为它编写了这些类:

public class TagJSON {

    @JsonProperty
    private Long id;
    @JsonProperty
    private Long version;
    @JsonProperty
    private String createdOn;
    @JsonProperty
    private String createdBy;
    @JsonProperty
    private String lastModifiedOn;
    @JsonProperty
    private String name;
    @JsonProperty
    private String description;

    public TagJSON() {
    }

    public TagJSON(Long id,Long version,String createdOn,String createdBy,String lastModifiedOn,String name,String description) {
        this.id = id;
        this.version = version;
        this.createdOn = createdOn;
        this.createdBy = createdBy;
        this.lastModifiedOn = lastModifiedOn;
        this.name = name;
        this.description = description;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getVersion() {
        return version;
    }

    public void setVersion(Long version) {
        this.version = version;
    }

    public String getCreatedOn() {
        return createdOn;
    }

    public void setCreatedOn(String createdOn) {
        this.createdOn = createdOn;
    }

    public String getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public String getLastModifiedOn() {
        return lastModifiedOn;
    }

    public void setLastModifiedOn(String lastModifiedOn) {
        this.lastModifiedOn = lastModifiedOn;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return "TagJSON{" +
                "id=" + id +
                ",version=" + version +
                ",createdOn='" + createdOn + '\'' +
                ",createdBy='" + createdBy + '\'' +
                ",lastModifiedOn='" + lastModifiedOn + '\'' +
                ",name='" + name + '\'' +
                ",description='" + description + '\'' +
                '}';
    }
}

public class AllTagsJson {

    private List<TagJSON> allTags;

    public AllTagsJson(List<TagJSON> allTags) {
        this.allTags = allTags;
    }

    public List<TagJSON> getAllTags() {
        return allTags;
    }

    public void setAllTags(List<TagJSON> allTags) {
        this.allTags = allTags;
    }

    @Override
    public String toString() {
        return "AllTagsJson{" +
                "allTags=" + allTags +
                '}';
    }
}

我想像这样运行它:

private AllTagsJson doJSONStuff() throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        // objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT,true);
        // objectMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
        // objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
        // AllTagsJson tagJSON = objectMapper.readValue(new File("tag_json.json"),AllTagsJson.class);
        List<TagJSON> tags = Arrays.asList(objectMapper.readValue(new File("tag_json.json"),TagJSON[].class));
        AllTagsJson allTags = new AllTagsJson(tags);
        return allTags;
    }

我已经尝试过注释行

我收到以下错误:


引起:com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造com.example.demo.TagJSON的实例(尽管至少存在一个Creator):没有从字符串值反序列化的字符串参数构造函数/工厂方法( 'com.example.demo.TagJSON') 在 [来源:(文件);行:1,列:1]


错误怎么可能出现在第 1 行第 1 列?在我砸我的电脑之前请帮忙:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...