【发布时间】:2020-03-19 00:28:59
【问题描述】:
我在使用 Jackson 将嵌套的 JSON 响应映射到 POJO 时遇到困难。目前,Users 类中的值返回为 null。
JSON:
{
"users": [
{
"username": "johnSmith123",
"email": "johnSmith123@gmail.com",
"birthday": "1989-10-23"
}
]
}
POJO:
public class Users {
@JsonProperty("username")
public String username;
@JsonProperty("email")
public String email;
@JsonProperty("birthday")
public String birthday;
}
控制器方法:
private ObjectMapper mapper = new ObjectMapper();
ResponseEntity<String> response = restTemplate.exchange(
accountUrl, HttpMethod.GET, entity, String.class);
Users user = mapper.readValue(response.getBody(), Users.class);
我该如何解决这个问题?
谢谢
【问题讨论】:
-
看起来您的 POJO 已正确设置所有内容。但是您尝试使用的 JSON 是对象的集合。所以你会想使用:
List<Users> user = mapper.readValue(response.getBody(), new TypeReference<List<Users>>(){}); -
嗨,我刚试过,但不幸的是得到了以下错误:com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of
java.util.ArrayList<com.package>out of START_OBJECT token.. -
啊,我看到您正在使用 Jackson 进行 JSON 绑定。我建议更新到更新的 Jakarta EE 投诉 JSON 绑定库,例如 Yasson。使用此库,您可以使用以下语法使用列表:github.com/eclipse-ee4j/jsonb-api/blob/master/docs/src/docs/…
-
感谢您的跟进,但我最终创建了一个包装类作为实现
标签: java json spring-boot jackson