【问题标题】:Spring Boot JSON to Multiple POJO classes from API Response BodySpring Boot JSON 到 API 响应正文中的多个 POJO 类
【发布时间】:2021-08-17 22:38:42
【问题描述】:

我正在创建一个获取用户坐标的应用程序,天气 API 中的坐标是为 JSON 请求正文发送的,然后 JSON 响应正文被映射到多个 POJO。

我遇到的问题是试图弄清楚如何与杰克逊一起映射响应正文的每个部分。我对框架还很陌生,所以指向正确方向的指针会很有帮助。

响应正文示例:

{
    "location": {
        "name": "Lake Tamarisk",
        "region": "California",
        "country": "United States of America",
        "lat": 33.81,
        "lon": -115.34,
        "tz_id": "America/Los_Angeles",
        "localtime_epoch": 1629239816,
        "localtime": "2021-08-17 15:36"
    },
    "current": {
        "last_updated_epoch": 1629239400,
        "last_updated": "2021-08-17 15:30",
        "temp_c": 36.4,
        "temp_f": 97.5,
        "is_day": 1,
        "condition": {
            "text": "Partly cloudy",
            "icon": "//cdn.weatherapi.com/weather/64x64/day/116.png",
            "code": 1003
        },
        "wind_mph": 12.1,
        "wind_kph": 19.4,
        "wind_degree": 176,
        "wind_dir": "S",
        "pressure_mb": 1006.0,
        "pressure_in": 29.72,
        "precip_mm": 0.0,
        "precip_in": 0.0,
        "humidity": 36,
        "cloud": 6,
        "feelslike_c": 39.3,
        "feelslike_f": 102.7,
        "vis_km": 10.0,
        "vis_miles": 6.0,
        "uv": 9.0,
        "gust_mph": 13.9,
        "gust_kph": 22.3
    }
}

POJO 类:

Location, Condition, Current

【问题讨论】:

    标签: java json spring


    【解决方案1】:

    让类层次结构映射 JSON 结构。至少应该有4个类。一个根类包含 JSON 数据和您提到的 3 个类。

    
    class Response {
        Location location;
        Current current;
    }
    
    class Current {
        String lastUpdatedEpoch;
        ......
        Condition condition;
    }
    
    class Condition {
        String text;
        .......
    }
    
    class Location {
        String name;
        ......
    }
    
    

    最后使用诸如注释@JsonNaming之类的策略将骆驼案例转换为蛇案例。

    【讨论】:

    • 编辑:原来我是个白痴,忘记了 Root 中的默认构造函数:facepalm
    猜你喜欢
    • 2020-08-26
    • 2019-09-27
    • 2018-07-13
    • 1970-01-01
    • 2018-06-02
    • 2020-03-24
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    相关资源
    最近更新 更多