Динамическое чтение нескольких массивов json с разными именами - PullRequest
0 голосов
/ 05 мая 2020

У меня есть JSON, у которого много массивов с другим именем, как показано ниже JSON.

{
  "CA": [
    {
      "high": 5,
      "low": 3,
      "key": "ABPS"
    },
    {
      "high": 6,
      "low": 2,
      "key": "ABPO"
    }
  ],
  "EE": [
    {
      "high": 8,
      "low": 4,
      "key": "ABPS"
    },
    {
      "high": 7,
      "low": 2,
      "key": "ABPO"
    }
  ]
}

Я пытаюсь динамически перебирать значения массива JSON без указания имени массив.

Я могу читать массив с указанием имени массива с приведенным ниже кодом, но как динамически читать значения массива без указания имени каждого массива, потому что файл JSON, который у меня есть, имеет тысячи массива.

package com.abc;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JsonRead {

    private static final String filePath = "jsonTestFile.json";

    public static void main(String[] args) {

        try (FileReader reader = new FileReader(ClassLoader.getSystemResource(filePath).getFile())) {

            JSONParser jsonParser = new JSONParser();
            JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);

            // get an array from the JSON object
            JSONArray lang = (JSONArray) jsonObject.get("CA");

            Iterator i = lang.iterator();

            // take each value from the json array separately
            while (i.hasNext()) {
                JSONObject innerObj = (JSONObject) i.next();
                System.out.println("high " + innerObj.get("high") + " low " + innerObj.get("low")+ " key " + innerObj.get("key"));
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

1 Ответ

0 голосов
/ 10 июня 2020

Это может помочь

for (Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext();) {
  String key = (String) iterator.next();
  JSONArray jArray = (JSONArray) jsonObject.get(key);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...