[英]How to extract nested json values by using spring boot api call
[英]How to extract value from nested JSON data in Spring Boot
目前,我每 3 分鍾撥打一次 API 以獲取天氣數據。 這是我作為字符串得到的響應:
{
"data": {
"timelines": [
{
"timestep": "current",
"endTime": "2023-01-20T13:33:00-05:00",
"startTime": "2023-01-20T13:33:00-05:00",
"intervals": [
{
"startTime": "2023-01-20T13:33:00-05:00",
"values": {
"dewPoint": 18.63,
"humidity": 66,
"precipitationIntensity": 0,
"precipitationProbability": 0,
"pressureSeaLevel": 1019.19,
"pressureSurfaceLevel": 1018.65,
"temperature": 25.5,
"temperatureApparent": 25.5,
"uvIndex": 3,
"windDirection": 151.69,
"windSpeed": 4.88
}
}
]
}
]
}
}
我想知道如何提取“值”中的屬性值(如“露點”、“濕度”等)。
我一直在嘗試使用 Beans 等來做到這一點,但是數據是嵌套的並且其中一些是數組這一事實讓我很難理解。 基本上,我想從 JSON 字符串中提取“值”中屬性的每個值,將它們連接成一個僅包含值的數組,然后將該數組保存在數據庫中。
您首先需要為 model 創建類,然后獲取字符串並使用Object 映射器獲取字符串並將其轉換為 object。
class WeatherData {
List<Timelines> timelines; // all other object are nested in here.
}
class Timelines {
String timestep;
String endTime;
String startTime;
List<Intervals> intervals;
}
class Intervals {
String startTime;
Values values;
}
class Values {
double dewPoint;
int humidity;
int precipitationIntensity;
int precipitationProbability;
double pressureSeaLevel;
double pressureSurfaceLevel;
double temperature;
double temperatureApparent;
int uvIndex;
double windDirection;
double windSpeed;
}
WeatherData data = new ObjectMapper().readValue(jsonString, WeatherData.class);
一旦將 map json 轉換為 Object,有幾種方法可以解決這個問題。您可以遍歷這些值,所以有兩個 for 循環。 到達間隔后,您可以將值添加到數組中。 List<WeatherData> newWeatherDataList = new ArrayList();
另一種方法是將 object 壓平,這樣它就不會那么嵌套了。 我建議查找如何在 Java 中壓平 object 。 您仍然需要一個 for 循環來遍歷間隔數組。 然后像上面一樣將它添加到新列表中。
從這里您可以將數據批量插入到表中。
我希望這有助於讓我知道我是否可以更新答案以提供更多背景信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.