如何将JSONObject解析为整数列表?

时间:2018-07-14 12:31:18

标签: java json

我有一个像这样的json文件。

    {
        "student": [
            {
                "name": "takeru",
                "id": 23,
            },
            {
                "name": "george",
                "id": 43,
            },
            {
                "name": "hans",
                "id": 45,
            }
        ],
        "cost": 100,
        "month": 6
    }

我想做的是将所有学生ID存储在ArrayList中?

2 个答案:

答案 0 :(得分:1)

首先,您的“ JSON文件”不是有效的JSON。您还有多余的逗号。

假设您的文件是有效的JSON,则可以使用库来解析JSON。我建议Gson。使用Gson的代码如下所示:

static List<Integer> storeStudentIds(Path file) throws IOException {
  Gson gson = new Gson();
  try (Reader r = Files.newBufferedReader(file)) {
    StudentGroup group = gson.fromJson(r, StudentGroup.class);
    return group.student.stream().map(s -> s.id).collect(Collectors.toList());
  }
}

private static final class StudentGroup {

  private List<Student> student;
  private int cost;
  private int month;
}

private static final class Student {

  String name;
  int id;
}

答案 1 :(得分:0)

String jsonStr = "{ 'student': [ { 'name': 'takeru', 'id': 23, }, { 'name': 'george', 'id': 43, }, { 'name': 'hans', 'id': 45, } ], 'cost': 100, 'month': 6}";

JSONObject jsonObj = new JSONOBject(jsonStr);
JSONArray jsonArr = jsonObj.get("student");

String name = "";
int id = 0;
for(JSONObject jo:jsonArr){
   name = jo.get("name");
   id = jo.get("id");
}