Как прочитать файл JSON с массивами и объектами в Java - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь прочитать файл, полученный из Opentdb, и получить доступ к данным только с определенных ключей.

Я перепробовал все приведенные методы, включая GSON и Json Simple, но в результате возникли ошибки.

Вот мой JSON:

    {
  "response_code": 0,
  "results": [
    {
      "category": "Sports",
      "type": "multiple",
      "difficulty": "easy",
      "question": "Which of the following sports is not part of the triathlon?",
      "correct_answer": "Horse-Riding",
      "incorrect_answers": [
        "Cycling",
        "Swimming",
        "Running"
      ]
    },
    {
      "category": "Sports",
      "type": "multiple",
      "difficulty": "easy",
      "question": "Which English football club has the nickname \u0026#039;The Foxes\u0026#039;?",
      "correct_answer": "Leicester City",
      "incorrect_answers": [
        "Northampton Town",
        "Bradford City",
        "West Bromwich Albion"
      ]
    }, 

Я хочу получить доступтолько категория, сложность, вопрос, правильный_ответ и неправильный ответ .

1 Ответ

0 голосов
/ 14 июня 2019

образец для вас

try {
        URL resource = App.class.getClassLoader().getResource("info.json");
        System.out.println(resource.toString());
        FileReader reader = new FileReader(resource.getFile());

        // Read JSON file
        Object obj = jsonParser.parse(reader);

        JSONArray infoList = (JSONArray) obj;
        System.out.println(infoList);

        Information i = new Information();

        List<Information> info = i.parseInformationObject(infoList);

        saveInformation(info);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

    } catch (IOException e) {
        e.printStackTrace();
    } catch (ParseException e) {
        e.printStackTrace();
    }

и

List<Information> parseInformationObject(JSONArray infoList) {
    List<Information> in = new ArrayList<>();

    infoList.forEach(emp -> {

        JSONObject info = (JSONObject) emp;

        String id = info.get("id").toString();
        String state = info.get("state").toString();
        String type = null;
        if (info.get("type") != null) {
            type = info.get("type").toString();
        }
        String host = null;
        if (info.get("host") != null) {
            host = info.get("host").toString();
        }
        long timestamp = (long) info.get("timestamp");

        in.add(new Information(id, state, type, host, timestamp));

    });
    return in;
}
...