【问题标题】:Finding user input in JSON file in Java在 Java 中的 JSON 文件中查找用户输入
【发布时间】:2021-03-12 18:28:36
【问题描述】:

所以我有两个这样的 JSON 文件:
飞行实体

[
  {
    "flightId": 0,
    "flightNumber": 6211,
    "departureAirportIATACode": "ANC",
    "arrivalAirportIATACode": "GDN",
    "departureDate": "2015-06-16T03:20:34 -02:00"
  },
  {
    "flightId": 1,
    "flightNumber": 8293,
    "departureAirportIATACode": "LAX",
    "arrivalAirportIATACode": "MIT",
    "departureDate": "2018-03-02T05:12:28 -01:00"
  },
  .
  .
  .
  {
    "flightId": 4,
    "flightNumber": 1551,
    "departureAirportIATACode": "SEA",
    "arrivalAirportIATACode": "LEW",
    "departureDate": "2018-01-11T10:48:16 -01:00"
  }
]

货物实体

[
  {
    "flightId": 0,
    "baggage": [
      {
        "id": 0,
        "weight": 494,
        "weightUnit": "lb",
        "pieces": 32
      },
      {
        "id": 1,
        "weight": 572,
        "weightUnit": "lb",
        "pieces": 951
      },
      {
        "id": 2,
        "weight": 520,
        "weightUnit": "kg",
        "pieces": 119
      },
      {
        "id": 3,
        "weight": 993,
        "weightUnit": "kg",
        "pieces": 672
      },
      {
        "id": 4,
        "weight": 318,
        "weightUnit": "kg",
        "pieces": 245
      }
    ],
    "cargo": [
      {
        "id": 0,
        "weight": 885,
        "weightUnit": "kg",
        "pieces": 893
      },
      {
        "id": 1,
        "weight": 804,
        "weightUnit": "kg",
        "pieces": 407
      },
      {
        "id": 2,
        "weight": 388,
        "weightUnit": "kg",
        "pieces": 674
      }
    ]
  }
]

现在我想获取请求航班的货物重量。例如:

  1. 用户输入航班号 6211。
  2. 我比较输入并从 FlightEntity JSON 文件中获取正确的 flightId(在本例中为 0)。
  3. 然后在 Cargo Entity JSON 文件中找到对应的 flightId。
  4. 打印出货物重量的总和。
    我的问题是我不知道如何在 JSON 数组中找到输入值(航班号),然后返回对应的 flightId。现在我的代码只接受用户的输入并从 Flight Entity 打印整个 JSON 文件。
package com.company;// Java program to read JSON from a file
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

import org.json.simple.JSONArray;
import org.json.simple.parser.*;
import org.json.simple.parser.JSONParser;

public class Main
{
    public static void main(String[] args) throws Exception
    {
        Scanner myObj = new Scanner(System.in);  // Create a Scanner object
        System.out.println("Enter Flight Number:");

        int FlightNumber = myObj.nextInt() ;  // Read user input
        Scanner newObj = new Scanner(System.in);
        System.out.println("Enter Flight Date(yyyy-mm-dd):");
        String Date = newObj.nextLine();
        System.out.println("Flight Number: " + FlightNumber);// Output user input
        System.out.println("Flight Number: " + Date);// Output user input
        Flight(FlightNumber, Date);
    }
    public static void Flight(int number, String date) throws IOException, ParseException {
        // parsing file "CargoEntity.json"
        Object obj = new JSONParser().parse(new FileReader("FlightEntity.json"));

        // typecasting obj to JSONObject
        JSONArray jo=(JSONArray)obj;

        // getting Flight id for our number
        //Iterating the contents of the array
        for (Object o : jo) {
            System.out.println(o);
        }

    }
}

【问题讨论】:

标签: java arrays json oop


【解决方案1】:

您可以通过如下修改您的Flight 函数来访问flightNumberflightId

for (Object o : jo) {
    JSONObject flight = (JSONObject)o;
    Long flightNumber = (Long)flight.get("flightNumber");
    Long flightId = (Long)flight.get("flightId");
    if (flightNumber.intValue() == number) {
        System.out.println("corresponding flightId is: " + flightId);
    }
}

单个航班o 被转换为JSONObject,允许通过get 方法访问相应的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-04
    • 2017-02-10
    • 2012-10-04
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多