将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;
}

这是元数据的POJO:

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

TimeSeriesDaily:

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

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

因此,Jackson将无法将1. Information映射到_1Information。你需要使用这样的东西:

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

其他领域也是如此。

最新更新