Reputation: 1
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;
}
Upvotes: 0
Views: 234
Reputation: 421
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.
Upvotes: 2