为了账号安全,请及时绑定邮箱和手机立即绑定

我想使用 jackson 库将嵌套在另一个对象内的 json 对象映射到 POJO

我想使用 jackson 库将嵌套在另一个对象内的 json 对象映射到 POJO

GCT1015 2023-08-09 16:06:03
我有一个对象嵌套在 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)
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

如果您不想对整个响应进行建模,可以使用 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>>(){});


查看完整回答
反对 回复 2023-08-09
?
湖上湖

TA贡献2003条经验 获得超2个赞

我在 json 字符串中看到两个错误,修复它应该可以帮助您轻松使用 java 或任何其他语言创建对象。


第 12 行:“缺少第 26 行: 的放置无效,


修复问题后的 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

}


查看完整回答
反对 回复 2023-08-09
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信