Я создаю страницу Java-сервлета для школы, и я хотел бы поместить в нее API.До сих пор у меня были некоторые проблемы с API.Это "Schiphol PublicFlight API", который я хочу добавить на свою веб-страницу.Однако я не могу заставить Java использовать API на основе json.
До сих пор я пытался «изолировать» все больше и больше кода json, но я просто не могу заставить его работать.Чтобы сделать это несколько проще для меня, я сейчас отделил код Java-сервлета от проекта.Теперь это мой код:
package nl.hva.ic103.johannes;
import java.io.FileReader;
import java.util.Iterator;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.*;
public class Main {
public static void main(String[] args) throws Exception {
JSONParser parser = new JSONParser();
String flightnumber = "HV6672";
HttpClient httpClient = HttpClients.createDefault();
HttpGet request = new HttpGet("https://api.schiphol.nl/public-flights/flights?app_id=61439ff8&app_key=b313373fd4122e93704874c69a59233d&flightname=" + flightnumber + "&sort=%2Bscheduletime");
request.addHeader("ResourceVersion", "v3");
HttpResponse response = httpClient.execute(request);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(responseBody);
JSONObject jsonObject = (JSONObject) parser.parse(responseBody);
JSONObject jo = (JSONObject) jsonObject;
String id = (String) jo.get("id");
String lastName = (String) jo.get("flightName");
System.out.println(id);
System.out.println(lastName);
JSONArray ja = (JSONArray) jo.get("flights");
System.out.println(ja);
}
}
}
И это формат json, который API дает мне:
{
"flights": [
{
"id": 125936439536285950,
"flightName": "HV6672",
"scheduleDate": "2018-12-26",
"flightDirection": "A",
"flightNumber": 6672,
"prefixIATA": "HV",
"prefixICAO": "TRA",
"scheduleTime": "01:00:00",
"serviceType": "J",
"mainFlight": "HV6672",
"codeshares": {
"codeshares": [
"KL2582"
]
},
"estimatedLandingTime": "2018-12-26T00:30:49.000+01:00",
"actualLandingTime": "2018-12-26T00:30:55.000+01:00",
"publicEstimatedOffBlockTime": null,
"actualOffBlockTime": null,
"publicFlightState": {
"flightStates": [
"LND",
"EXP"
]
},
"route": {
"destinations": [
"TFS"
]
},
"terminal": 1,
"gate": "D74",
"baggageClaim": {
"belts": [
"6"
]
},
"expectedTimeOnBelt": "2018-12-26T01:16:53.669+01:00",
"checkinAllocations": null,
"transferPositions": null,
"aircraftType": {
"iatamain": "73H",
"iatasub": "73H"
},
"aircraftRegistration": "PHHZX",
"airlineCode": 164,
"expectedTimeGateOpen": null,
"expectedTimeBoarding": null,
"expectedTimeGateClosing": null,
"schemaVersion": "3"
}
],
"schemaVersion": "3"
}
Как я могу получить такие вещи, как 'gate', 'Terminal' и'Тип самолета' проанализировал мою программу Java?Я чувствую, что все, что я могу получить с этими результатами, похоже на один кусок данных, и невозможно разделить данные.Кто-нибудь знает, как проанализировать эти три результата в моем проекте Java?Более подробная информация об API приведена на их веб-сайте: https://www.schiphol.nl/en/developer-center/page/our-flight-api-explored/