Jackson是Java中最流行的JSON處理框架之一。它有許多強大的功能,包括處理JSON對象和數組,嵌套結構等。在本文中,我們將探討如何使用Jackson處理嵌套數組。
假設我們有一個JSON字符串,它包含一個名為“students”的數組,每個元素都是一個包含學生信息的對象。其中,“courses”字段是一個嵌套數組,它包含該學生正在上的所有課程:
{ "students": [ { "name": "Alice", "age": 20, "courses": ["math", "physics"] }, { "name": "Bob", "age": 21, "courses": ["chemistry", "biology"] } ] }
現在我們想要將這個JSON字符串轉換為Java對象(或Map),并訪問每個學生正在上的課程列表。我們可以使用Jackson來完成這項任務:
ObjectMapper objectMapper = new ObjectMapper(); String json = "{'students': [{'name':'Alice','age':20,'courses':['math','physics']},{'name':'Bob','age':21,'courses':['chemistry','biology']}]}"; JsonNode rootNode = objectMapper.readTree(json); JsonNode studentsNode = rootNode.get("students"); if (studentsNode.isArray()) { for (JsonNode studentNode : studentsNode) { String name = studentNode.get("name").asText(); int age = studentNode.get("age").asInt(); JsonNode coursesNode = studentNode.get("courses"); if (coursesNode.isArray()) { ListcoursesList = new ArrayList<>(); for (JsonNode courseNode : coursesNode) { String course = courseNode.asText(); coursesList.add(course); } System.out.println(name + " is taking these courses: " + coursesList); } } }
上面的代碼首先創建一個ObjectMapper對象,然后使用它來解析JSON字符串。我們可以通過調用JsonNode的get()方法來訪問JSON中的每個元素。
在這個例子中,我們首先獲取“students”節點,并檢查它是否是數組。如果是,我們就可以遍歷數組中的每個學生,然后從每個學生節點獲取姓名、年齡和課程列表。我們也可以檢查課程節點是否是一個數組,如果是,我們就可以遍歷它,并將每個課程添加到一個List中。
最后,我們只需打印每個學生正在上的課程列表。這樣,我們就可以從嵌套的列表中提取出有用的信息,而不必手動解析JSON字符串。