Мне кажется, что я действительно близок, но я не могу понять, как удалить пары ключ / значение в определенном диапазоне в записи объекта JSON, используя Java вместо поиска определенных записей c. В дополнение к, возможно, плохому синтаксису, вероятно ли, что моя библиотека JSON jar неправильно считывает типы объектов на основе сообщения об ошибке? Я настроил IntelliJ для чтения файла .jar в разделе внешней библиотеки, поэтому я не уверен, является ли это размещение jar или способ, которым я написал код (или оба)
public static void removeTheFields(Object object) {
if (object instanceof JSONArray) {
JSONArray array = (JSONArray) object;
for (int i = 0; i < array.size(); ++i) removeTheFields(array.get(i));
} else if (object instanceof JSONObject) {
JSONObject json = (JSONObject) object;
JSONArray names = (JSONArray) json.keySet();
if (names == null) return;
for (int i = 3; i < names.size() - 8; ++i) {
String key = names.get(i).toString();
json.remove(key);
}
}
}
}
public static void main(String[] args) {
try {
JSONObject obj = (JSONObject) new JSONParser().parse(new FileReader("edu01.json"));
removeTheFields(obj);
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
Exception in thread "main" java.lang.ClassCastException: class org.json.simple.JSONArray cannot be cast to class org.json.simple.JSONObject (org.json.simple.JSONArray and org.json.simple.JSONObject are in unnamed module of loader 'app')