java - 我想使用杰克逊库将嵌套在另一个对象中的 json 对象映射到 POJO
问题描述
我有一个对象嵌套在 Json 文件中的另一个对象中。我想将此对象与字段映射到模型类。
{
"code": 200,
"time": "2019-09-05T07:09:44.228+0000",
"data": {
"statuses": [
{
"statusType": "IN_PROGRESS",
"statusTimestamp":"019-09-05T17:04:54+1000"
},
{
"statusType": "SENT",
"statusTimestamp":"2019-09-05T21:04:55+1000"
},
{
"statusType": "OPENED",
"statusTimestamp":"2019-09-05T23:04:55+1000"
},
{
"statusType": "INTERACTION_ID_RECEIVED",
"statusTimestamp":"2019-09-06T00:04:55+1000"
}
]
},
"status": 200,
"message": null,
"errors": null,
}
我想将 statusType 和 TimeStamp 映射到自定义模型类。
型号类:
公共类模型{
private String statusType;
private DateTime statusTimestamp;
public Model(String statusType, String statusTimestamp) {
this.statusType=statusType;
this.statusTimestamp=new DateTime(statusTimestamp);
}
public String getStatusType() {
return statusType;
}
public void setStatusType(String statusType) {
this.statusType = statusType;
}
public DateTime getStatusTimestamp() {
return statusTimestamp;
}
public void setStatusTimestamp(String statusTimestamp) {
this.statusTimestamp = new DateTime(statusTimestamp);
}
}
我想将状态映射到这个模型类并将这些对象存储在类似这样的链接中
列出状态 = ParsedJson.read("$..['statuses'][*]", List.class)
解决方案
如果您不想对整个响应进行建模,可以使用 Jackson 将 JSON 解析为树节点,然后仅映射您关心的部分:
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(json);
JsonNode statusesNode = rootNode.path("data").path("statuses");
List<Status> statuses = mapper.convertValue(statusesNode,
new TypeReference<List<Status>>(){});
推荐阅读
- jquery - 问:我无法理解 jquery 中的“var variable = {”
- sql - 如何在函数 SQL Server 中执行过程
- windows-10 - 使用单个命令打开多个文件
- mysql - 将 JSON customers_contacts 添加到客户表中
- python - 无法使用 Ride-Robot-SSH 库执行命令
- python - 如何在 python 数据框中找到唯一的列表条目?
- terraform - 使用 Terraform 在 EC2 Windows 实例中初始化 EBS 卷
- jquery - 数据表保存手动输入的值
- google-cloud-platform - 如何为 Visual Studio ion Visual Studio 2019 社区安装谷歌云工具?
- angular - 在 form.reset 之后使用默认输入重新填充表单控件