Récupérer les chaînes de tableau JSON à l'aide de Jackson

J'ai trouvé plusieurs réponses qui sont proches de ce que je suis en train de faire, mais pas assez que j'ai été en mesure de l'obtenir pour fonctionner. J'ai un tas de JSON qui ressemble à cet exemple (le seul en fait plusieurs niveaux de plus profond et avec des centaines de postes au niveau je veux accéder): {"query":{"pages":{"links":[{"word":"bobsyeruncle","code":4},{"word":"easyaspie","code":3}]}}}. Je ne peux pas changer le format; c'est quelqu'un d'autre API. Il y a beaucoup de ce que je n'ai pas besoin; en fait je ne veux quelque chose comme un tableau ["bobsyeruncle","easyaspie"]. (Ou d'une Liste ou quoi que ce soit.)

J'ai testé avec une version plus simple du JSON qui ne dispose pas d'un tableau, et a été en mesure d'accéder à une chaîne unique facilement à l'aide de la rootNode.get("requête").get("pages")... manière décrite dans https://stackoverflow.com/questions/338586/a-better-java-json-library/338608#338608. Mais je n'ai pas été en mesure d'obtenir à la gamme de cette façon. La plupart des réponses que j'ai trouvé ici supposent que je veux créer un POJO comme "Liens" qui inclut à la fois "mot" et "code", dont je n'ai pas. Pour accéder à la les chaînes que je veux, est-il nécessaire de créer quelque chose comme une liste de "Liens" qui incluent à la fois "mot" et "code", et puis de les ignorer "code"? Cela ne semble pas juste.

(D'ailleurs, si quelqu'un pouvait m'indiquer la documentation/tutoriels quelque part entre le JacksonInFiveMinutes tutoriel et l'ensemble de la javadoc, je suis sûr que cela aide aussi.)

ETA cela a fonctionné, je pense!:

            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());
        }

OriginalL'auteur umbraphile | 2011-11-20