Разбор API json для сервлетов Java - PullRequest
0 голосов
/ 26 декабря 2018

Я создаю страницу 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/

1 Ответ

0 голосов
/ 26 декабря 2018
JSONArray ja = (JSONArray) jo.get("flights");
JsonObject flightRec = ja.getJsonObject(0);
String gate = (String) flightRec.get("gate");
//...etc

Какая проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...