Предполагая, что row
является одной из записей в ArrayNode
, может быть полезен следующий простой подход. Он использует абстракцию JsonNode
вместо ряда вложенных Map
объектов, которые я лично предпочитаю, поскольку JsonNode
предоставляет ряд служебных методов, которые полезны при работе с данными такого типа (данные, где структура, возможно, неизвестна или очень динамична, поэтому ее нельзя легко преобразовать в POJO).
Тестовый пример ниже показывает, как найти количество строк и как распечатать значения. Чтобы получить значения, используется метод JsonNode.elements()
, а количество строк - это просто вызов size()
-метода.
public class ArrayNodeTest {
@Test
public void verifySizeAndPrintRows() throws IOException {
final String jsonStr =
"[{\"key11\":\"value11\",\"key12\":\"value12\"},\n" +
"{\"key21\":\"value21\",\"key22\":\"value22\"},\n" +
"{\"keyn1\":\"valuen1\",\"keyn2\":\"valuen2\"}]";
final ObjectMapper mapper = new ObjectMapper();
final JsonNode jsonNode = mapper.readTree(jsonStr);
// Verify size
Assert.assertEquals(3, jsonNode.size());
// And print rows
for (final JsonNode row : jsonNode) {
final Iterable<JsonNode> iterable = () -> row.elements();
iterable.forEach(elem -> System.out.println(elem.asText()));
}
}
}