Этот ответ относится к версиям Jackson до 2+ (изначально написано для 1.8). См. @ ответ SupunSameera для версии, которая работает с более новыми версиями Джексона.
Термины JSON для «имени узла» - это «ключ». С JsonNode#iterator()
не включает ключи, вам нужно повторить по-другому :
for (Map.Entry<String, JsonNode> elt : rootNode.fields())
{
if ("foo".equals(elt.getKey()))
{
// bar
}
}
Если вам нужно только , чтобы увидеть ключи, вы можете немного упростить вещи с помощью JsonNode#fieldNames()
:
for (String key : rootNode.fieldNames())
{
if ("foo".equals(key))
{
// bar
}
}
А если вы просто хотите найти узел с ключом "foo"
, вы можете получить к нему прямой доступ . Это даст лучшую производительность (поиск в постоянном времени) и более чистый / понятный код, чем при использовании цикла:
JsonNode foo = rootNode.get("foo");
if (foo != null)
{
// frob that widget
}