从 JSON 文件(嵌套对象数组)w/ JAVA 打印出特定值
Print out specific values from a JSON file (nested objects-arrays) w/ JAVA
我希望能够从 JSON 文件中解析并打印出一些信息,但是每当我尝试使用嵌套对象数组时,我都会卡住。
我正在使用 JsonSimple 库。
我的json文件:
x
到目前为止我一直在做的是将文件修改为以下内容:
x
并且通过使用迭代器能够打印出所有信息:
x
一旦我修改了 JSON 文件并添加了 Staff 对象,它就停止工作了。
我知道我做错了什么,但我看不到什么。
我真的很希望能够使用 JSON 文件中包含的 Staff 对象打印出此信息,完成后说我需要按年龄升序打印出这 2 位经理我将如何这样做吗?
非常感谢所有想法和建议!谢谢。
经理class:
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);
}
构建管理器数组列表后,您可以使用以下方法对数组列表进行排序。
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
我希望能够从 JSON 文件中解析并打印出一些信息,但是每当我尝试使用嵌套对象数组时,我都会卡住。
我正在使用 JsonSimple 库。
我的json文件:
x
到目前为止我一直在做的是将文件修改为以下内容:
x
并且通过使用迭代器能够打印出所有信息:
x
一旦我修改了 JSON 文件并添加了 Staff 对象,它就停止工作了。 我知道我做错了什么,但我看不到什么。
我真的很希望能够使用 JSON 文件中包含的 Staff 对象打印出此信息,完成后说我需要按年龄升序打印出这 2 位经理我将如何这样做吗?
非常感谢所有想法和建议!谢谢。
经理class:
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);
}
构建管理器数组列表后,您可以使用以下方法对数组列表进行排序。
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