Вывести конкретные значения из файла JSON (вложенные объекты-массивы) с JAVA
Я хотел бы иметь возможность анализировать и распечатывать некоторую информацию из файла JSON, однако я застреваю всякий раз, когда пытаюсь сделать это с вложенными объектами-массивами.
Я использую библиотеку JsonSimple.
Мой файл JSON:
x
Что я делал до сих пор, так это изменил файл следующим образом:
x
И с помощью итератора удалось распечатать всю информацию:
x
Как только я изменяю файл JSON и добавляю объект Staff, он перестает работать. Я знаю, что делаю что-то не так, но не вижу, что.
Я действительно хотел бы иметь возможность распечатать эту информацию с помощью объекта Staff, включенного в файл JSON, и как только это будет сделано, скажите, что мне нужно распечатать этих 2 менеджеров в порядке возрастания возраста, как я это сделаю?
Все идеи и предложения будут высоко оценены! Благодарю.
Менеджер класса:
x
1 ответ
Сначала нужно получить объект Staff, из которого нужно получить Manager
List<Manager> managersList = new ArrayList<Manager>();
JSONObject staff = jsonObject.getJSONObject("Staff");
JSONArray managers = staff.getJSONArray("Managers");
for (int index = 0; index < managers.length(); index++) {
JSONObject resultObject = managers.getJSONObject(index);
System.out.println(resultObject);
Manager manager = new Manager();
manager.setName(resultObject.getString("name");
manager.setAge(resultObject.getInt("age");
manager.setPosition(resultObject.getString("position");
managersList.add(manager);
}
как только вы построите список массивов Manager, вы можете использовать следующее для сортировки списка массивов.
Collections.sort(managersList, new Comparator<Manager>() {
@Override
public int compare(Manager object1, Manager object2) {
return Integer.compare(object1.getAge(), object2.getAge());
}
});
Обновить:
Вот ваше полное рабочее решение:
Менеджер:
public class Manager {
private int age;
private String name;
private String position;
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPosition() {
return this.position;
}
public void setPosition(String position) {
this.position = position;
}
}
Основной метод:
public static void main(String[] args) {
JSONObject jsonObject = new JSONObject("{\"Staff\": {\"Managers\": [{\"name\": \"Chris\",\"age\": 43,\"position\": \"Retail\"},{\"name\": \"John\",\"age\": 36,\"position\": \"Sales\"}]}}");
List<Manager> managersList = new ArrayList<Manager>();
JSONObject staff = jsonObject.getJSONObject("Staff");
JSONArray managers = staff.getJSONArray("Managers");
for (int index = 0; index < managers.length(); index++) {
JSONObject resultObject = managers.getJSONObject(index);
Manager manager = new Manager();
manager.setName(resultObject.getString("name"));
manager.setAge(resultObject.getInt("age"));
manager.setPosition(resultObject.getString("position"));
managersList.add(manager);
}
Collections.sort(managersList, new Comparator<Manager>() {
@Override
public int compare(Manager object1, Manager object2) {
return Integer.compare(object1.getAge(), object2.getAge());
}
});
for (Manager iterator : managersList) {
System.out.println(iterator.getName() + " --- " + iterator.getAge() + " --- " + iterator.getPosition());
}
}
выход:
John --- 36 --- Sales
Chris --- 43 --- Retail