【发布时间】:2022-12-15 11:57:21
【问题描述】:
一段时间以来,我一直在尝试反序列化一组 json 对象,但互联网上的所有答案要么已弃用,要么对我不起作用。
下面的代码总是返回错误信息:
...MismatchedInputException: Root name ('builders') does not match expected ('Builder[]') for type `[LModel.Attributes.Builder;`
以下是我的 DTO 代码:
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;
@JsonRootName("builders")
public class Builder {
private String id;
private String builder;
@JsonProperty("id")
public void setId(String id) {
this.id = id;
}
@JsonProperty("name")
public void setBuilder(String builder) {
this.builder = builder;
}
public String getBuilder() {
return builder;
}
public String getId(){
return id;
}
}
在这里我们有我们的反序列化器:
var json = response.body();
mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
var builders = mapper.readValue(json, Builder[].class);
这是我的 JSON:
{
"builders": [
{
"id": 1,
"name": "Haley LLC"
},
{
"id": 2,
"name": "Stoltenberg, Mayert and Weimann"
},
{
"id": 3,
"name": "Ziemann Group"
},
{
"id": 4,
"name": "Monahan - Torp"
},
{
"id": 5,
"name": "Fritsch, Harber and Lemke"
}
]
}
【问题讨论】:
标签: java json jackson deserialization