简体   繁体   中英

Convert (Deserializing) JSON to Java POJO Jackson

How to convert below JSON to java HashMap What will be the POJO How map JSON object with Jackson

*{
    "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"
        }
    }
}

This is POJO of Alphavantage:

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

This is POJO of MetaData:

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

Pojo of TimeSeriesDaily:

public class TimeSeriesDaily {
    public _20200814 _20200814;
}

This trying to map Pojo using Java Jackson:

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,Map<TimeSeriesDaily,Object>> data = mapper.readValue(jsonResponse, new TypeReference<Map<Alphavantage,Map<TimeSeriesDaily,Object>>>(){});
        return data;
    }

In order for it to work, the Java object needs to have the exact same name as the JSON field key.

So, Jackson would not be able to map 1. Information to _1Information . You need to use something like this:

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

The same holds for every other field.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM