【问题标题】:How do I parse a JSONObject into a list of integers?如何将 JSONObject 解析为整数列表?
【发布时间】:2018-07-14 22:04:41
【问题描述】:

我有一个这样的 json 文件。

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

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

【问题讨论】:

  • @UllasHunka 这是不同的,因为我需要先解析“学生”部分。然后我可以得到一个我猜的jsonarray。这也是我做不到的

标签: java json


【解决方案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;
}

【讨论】:

    【解决方案2】:
    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");
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 1970-01-01
      • 2018-02-10
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      相关资源
      最近更新 更多