如何解决使用 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 举报,一经查实,本站将立刻删除。