java - 反序列化期间未映射标有 @JsonRootName 的类
问题描述
我正在使用 RestTemplate 调用外部 API。这是 API 调用的结果:
{
"results": [
{
"code": "UDE",
"usergroups": [
{
"name": "Some name",
"users": [
{
"id": 457,
"login": "uid34",
}
]
}
]
}
]
}
我只对获取users
.
- 我不想返回一个
JSON String
和用户gson
来定位users
节点。 - 我想避免创建太多的包装器。
所以这就是我到目前为止所做的:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
@JsonInclude(Include.NON_NULL)
@JsonRootName("usergroups")
public class UserGroup{
@JsonProperty("users")
private List<User> users = new ArrayList<User>();
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Response<T> {
@JsonProperty("results")
private List<T> results= new ArrayList<>();
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class User{
private Integer id;
private String login;
}
ResponseEntity<Response<UserGroup>> response = restTemplate.exchange(url, HttpMethod.GET, entity,
new ParameterizedTypeReference<Response<UserGroup>>(){});
List<User> users = response.getBody().getResults()
.stream()
.map(UserGroup::getUsers)
.flatMap(Collection::stream)
.collect(Collectors.toList());
API 调用工作正常,但我所拥有的users
属性始终为空UserGroup
。我究竟做错了什么?谢谢你的帮助。
注意:我也尝试过这个解决方案,但出现异常
解决方案
推荐阅读
- python - 运行屏幕截图后图像未存储
- react-native - 通用链接不适用于 React Native
- ubuntu - 通过 OVA 部署的 Ubuntu 19.04 的凭据是什么?
- ios - 与集合视图相关的设计
- android - 如何绕过点击外的android对话框
- postgresql - 强制转换为无效语法的整数数组
- asp.net-core - 如何确保只有一个 IHostedService 实例在 .NET core 2.2 Web API 中运行
- c++ - C++ API:修改内部对象
- sql - SQL Graph 最短路径示例
- c# - 如何在 MVVM 中的 UserControl 之间进行通信 - WPF 应用程序