ObjectNode
не является потомком IntNode
, поэтому вы не можете привести IntNode к ObjectNode.
Вам необходимо привести конкретную строку кода к IntNode
:
IntNode currentNode = (IntNode) iter.next();
или любому суперклассу IntNode
:
JsonNode currentNode = (JsonNode) iter.next();
Это иерархия ObjectNode
java.lang.Object*
com.fasterxml.jackson.databind.JsonSerializable.Base*
com.fasterxml.jackson.databind.JsonNode*
com.fasterxml.jackson.databind.node.BaseJsonNode*
com.fasterxml.jackson.databind.node.ContainerNode<ObjectNode>
com.fasterxml.jackson.databind.node.ObjectNode
и это иерархия для IntNode
java.lang.Object*
com.fasterxml.jackson.databind.JsonSerializable.Base*
com.fasterxml.jackson.databind.JsonNode*
com.fasterxml.jackson.databind.node.BaseJsonNode*
com.fasterxml.jackson.databind.node.ValueNode
com.fasterxml.jackson.databind.node.NumericNode
com.fasterxml.jackson.databind.node.IntNode
Я добавил * близкий к обычным суперклассам, которые можно использовать для приведения типов к более универсальному типу, который может включать как IntNode
, так и ObjectNode
.
Обратите внимание, что вам также необходимо изменить тип переменной currentNode
в соответствии с приведением при необходимости.
Но странно то, что вам нужно пойти на такой глубокий уровень, используя Джексона. Почему бы вам не преобразовать данные, хранящиеся в DynamoDb, в виде bean-компонента, если у вас нет предопределенной структуры для ваших данных (и поэтому вы еще не определили bean-компонент для их размещения), вы также можете использовать Map
.
Существуют функции библиотеки Java DynamodB, которые делают это автоматически, например, вы можете использовать код, подобный следующему:
Table table = getDynamoDB().getTable("yourTable");
Item item = table.getItem("id", "yourId");
Map map = item.asMap();
// map is holding in java the data present on Dynamodb
// in the table yourTable with id yourId