Большинство методов jsonNode ожидают, что fieldNames не являются действительными значениями.
Если вы ищете ISBN, вы можете сделать это следующим образом (так что это, вероятно, не лучший пример)
public static void main(String[] args) throws IOException {
byte[] jsonData = Files.readAllBytes(Paths.get("archive.json"));
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonData);
List<JsonNode> volumeNodes = rootNode.findValues("volumeInfo");
String authorName = "Gary Cornell";
for (JsonNode volumeNode : volumeNodes) {
JsonNode authors = volumeNode.path("authors");
Iterator<JsonNode> authorIt = authors.elements();
while(authorIt.hasNext()){
JsonNode author = authorIt.next();
if (authorName.equals(author.textValue())) {
System.out.println(author.textValue());
JsonNode isbn = volumeNode.path("industryIdentifiers");
Iterator<JsonNode> isbnIt = isbn.elements();
while(isbnIt.hasNext()) {
System.out.println(isbnIt.next());
}
}
}
}
}