微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将JSON反序列化转换为Java POJO Jackson

如何解决将JSON反序列化转换为Java POJO Jackson

如何将以下JSON转换为Java HashMap 什么是POJO 如何用Jackson映射JSON对象

*{
    "Meta Data": {
        "1. information": "Daily Prices (open,high,low,close) and Volumes","2. Symbol": "IBM","3. Last Refreshed": "2020-08-14","4. Output Size": "Compact","5. Time Zone": "US/Eastern"
    },"Time Series (Daily)": {
        "2020-08-14": {
            "1. open": "124.2000","2. high": "125.5600","3. low": "123.9100","4. close": "125.2700","5. volume": "2963753"
        },"2020-08-13": {
            "1. open": "125.9600","2. high": "126.3900","3. low": "124.7700","4. close": "125.0300","5. volume": "3171258"
        }
    }
}

这是Alphavantage的POJO:

public class Alphavantage {
    public MetaData MetaData;
    public TimeSeriesDaily timeSeriesDaily;
}

这是MetaData的POJO:

public class MetaData{
    public String _1information;
    public String _2Symbol;
    public String _3LastRefreshed;
    public String _4OutputSize;
    public String _5TimeZone;
}

TimeSeriesDaily的Pojo:

public class TimeSeriesDaily {
    public _20200814 _20200814;
}

这试图使用Java Jackson映射Pojo:

public static Map<Alphavantage,Map<TimeSeriesDaily,Object>> getAlphaData() {        
        RestAssured.baseURI = uri;
        RequestSpecification request = RestAssured.given().log().all();
        Response response = request.get(uri + "/query?function=TIME_SERIES_DAILY&symbol=IBM&apikey=demo");
        String jsonResponse=response.getBody().asstring();

        ObjectMapper mapper = new ObjectMapper();
        Map<Alphavantage,Object>> data = mapper.readValue(jsonResponse,new TypeReference<Map<Alphavantage,Object>>>(){});
        return data;
    }

解决方法

要使其正常工作,Java对象需要与JSON字段键具有完全相同的名称。

因此,杰克逊将无法将1. Information映射到_1Information。 您需要使用以下内容:

@JsonProperty("1. Information")
public String _1Information;

其他所有字段都一样。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。