Java 无法将com.fasterxml.jackson.databind.node.IntNode转换为com.fasterxml.jackson.databind.node.ObjectNode
我试图学习DynamoDb,并尝试使用中的示例将数据从json加载到表中 但我得到了以下例外:Java 无法将com.fasterxml.jackson.databind.node.IntNode转换为com.fasterxml.jackson.databind.node.ObjectNode,java,exception,amazon-dynamodb,jsonnode,Java,Exception,Amazon Dynamodb,Jsonnode,我试图学习DynamoDb,并尝试使用中的示例将数据从json加载到表中 但我得到了以下例外: com.fasterxml.jackson.databind.node.IntNode cannot be cast to com.fasterxml.jackson.databind.node.ObjectNode 在下一行: currentNode = (ObjectNode) iter.next(); 你能告诉我我做错了什么吗 你也可以让我知道有没有任何方法我可以使用图形用户界面来查看我的
com.fasterxml.jackson.databind.node.IntNode cannot be cast to com.fasterxml.jackson.databind.node.ObjectNode
在下一行:
currentNode = (ObjectNode) iter.next();
你能告诉我我做错了什么吗
你也可以让我知道有没有任何方法我可以使用图形用户界面来查看我的表内容。在我的项目中,我正在使用DynamoDbLocal和maven
谢谢,
ObjectNode
不是IntNode
的后代,因此不能将IntNode强制转换为ObjectNode。
您需要将特定的代码行强制转换为IntNode
:
IntNode currentNode = (IntNode) iter.next();
JsonNode currentNode = (JsonNode) iter.next();
或到IntNode
的任何超类:
IntNode currentNode = (IntNode) iter.next();
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
和ObjectNode
请注意,如有必要,还需要根据强制转换相应地更改变量currentNode
的类型
但奇怪的是,你需要在这么深的层次上使用杰克逊。为什么不将存储在DynamoDb中的数据转换为bean呢?如果没有预定义的数据结构(因此还没有定义bean来承载它们),那么还可以使用
映射
dynamodb java library的一些函数会自动为您执行这些操作,例如,您可以使用类似以下的代码:
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
问题出现在我的json文件中。我在输入文件中使用json,如下所示:
{
"year" : "2013",
"title" : "Turn It Down, Or Else!",
"info" : {
"directors" : [
"Alice Smith",
"Bob Jones"
],
"release_date" : "2013-01-18T00:00:00Z",
"rating" : "6.2",
"genres" : [
"Comedy",
"Drama"
],
"image_url" : "http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg",
"plot" : "A rock band plays their music at high volumes, annoying the neighbors.",
"rank" : "11",
"running_time_secs" : "5215",
"actors" : [
"David Matthewman",
"Ann Thomas",
"Jonathan G. Neff"
]
}
}
虽然我的代码希望它是这样的:
[
{
"year" : "2013",
"title" : "Turn It Down, Or Else!",
"info" : {
"directors" : [
"Alice Smith",
"Bob Jones"
],
"release_date" : "2013-01-18T00:00:00Z",
"rating" : "6.2",
"genres" : [
"Comedy",
"Drama"
],
"image_url" : "http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg",
"plot" : "A rock band plays their music at high volumes, annoying the neighbors.",
"rank" : "11",
"running_time_secs" : "5215",
"actors" : [
"David Matthewman",
"Ann Thomas",
"Jonathan G. Neff"
]
}
}
]
您可以使用免费帐户直接从AWS控制台访问DynamoDb。这是开始编程的最简单解决方案,因为它使您能够使用AWS接口查看数据。将本地数据库留到您更容易使用itI的时候,我必须在Dynamo中输出数据。我并没有从表中读到它。我下面的例子来自amazon文档。它是如何工作的them@Manish这意味着你必须在Dynamo中输出数据?dynamo中的数据存储在表中,因此您可以从表中提取数据。或者你要提取什么?@Manish发布你正在关注的dynamodb文档的链接。链接已经在我的帖子中了。我也有问题。问题出现在我的json文件中。我在其中使用了json,而它应该是一个json列表。