簡體   English   中英

使用JAVA從JSON文件(嵌套對象數組)中打印出特定值

[英]Print out specific values from a JSON file (nested objects-arrays) w/ JAVA

我希望能夠解析並從JSON文件中打印出一些信息,但是每當嘗試使用嵌套對象數組進行操作時,我都會卡住。

我正在使用JsonSimple庫。

我的json文件:

x

到目前為止,我一直在將文件修改為以下內容:

x

通過使用迭代器,可以打印出所有信息:

x

一旦我修改了JSON文件並添加了Staff對象,它就會停止工作。 我知道我做錯了,但看不到。

我真的很想能夠使用JSON文件中包含的Staff對象來打印此信息,完成后說我需要按升序打印這兩位經理,我該怎么做?

所有想法和建議將不勝感激! 謝謝。

Manager類:

x

首先,您需要從中獲得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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM