Tôi đã tìm thấy một số câu trả lời là gần với những gì tôi đang cố gắng để làm, nhưng chưa đủ mà tôi đã có thể để có được nó để làm việc. Tôi có một bó JSON trông giống như ví dụ này (chỉ thực sự ở một vài cấp độ sâu hơn và với hàng trăm mục ở cấp độ mà tôi muốn truy cập): {"query":{"pages":{"links":[{"word":"bobsyeruncle","code":4},{"word":"easyaspie","code":3}]}}}
. Tôi không thể thay đổi định dạng; đó là API của người khác. Có khá nhiều thứ mà tôi không cần; trong thực tế, tôi chỉ muốn một cái gì đó giống như một mảng ["bobsyeruncle", "easyaspie"]. (Hoặc một Danh sách hoặc bất kỳ thứ gì.)Lấy chuỗi từ mảng JSON sử dụng Jackson
Tôi đã thử nghiệm với một phiên bản JSON đơn giản hơn không có mảng và có thể truy cập một chuỗi đơn giản bằng cách sử dụng rootNode.get ("truy vấn"). ("trang") ... cách được mô tả trong https://stackoverflow.com/questions/338586/a-better-java-json-library/338608#338608. Nhưng tôi đã không thể có được ở mảng như vậy. Hầu hết các câu trả lời tôi đã tìm thấy ở đây giả định rằng tôi muốn tạo một POJO như "Liên kết" bao gồm cả "từ" và "mã" mà tôi không có. Để truy cập vào chuỗi tôi muốn, có cần tạo một thứ gì đó giống như danh sách "Liên kết" bao gồm cả "từ" và "mã" và sau đó bỏ qua "mã" không? Điều đó có vẻ không đúng.
(Ngoài ra, nếu có ai có thể chỉ cho tôi tài liệu/hướng dẫn ở đâu đó ở giữa hướng dẫn JacksonInFiveMinutes và cả javadoc, tôi chắc chắn rằng sẽ giúp quá.)
ETA này làm việc, tôi nghĩ !:
String theJsonString = "{\"query\":{\"pages\":{\"links\":"
+ "[{\"word\":\"bobsyeruncle\"},{\"word\":\"easyaspie\"}]}}}";
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(theJsonString);
JsonNode interestingObjectNode = rootNode.path("query").path("pages").path("links");
for (int i = 0; i < interestingObjectNode.size(); i ++) {
System.out.println(interestingObjectNode.get(i).path("word").asText());
}
Đã xóa nhận xét trước đó của tôi - tôi đã đến đó cuối cùng, đặt một số mã ở trên trong trường hợp có ai đó tìm thấy câu hỏi này. – umbraphile
An toàn? u có nghĩa là gì bởi "An toàn" trong việc sử dụng jackson đó? @StaxMan – gumuruh
Có nghĩa là an toàn nếu bạn sử dụng 'get', và không có nút nào phù hợp, nó trả về null và phải được kiểm tra. Nhưng với 'đường dẫn', một "nút bị thiếu" ảo được trả về, do đó không cần kiểm tra null. – StaxMan