我正在使用Kotlin和AWS DynamoDB开发一个Android应用程序。我是这两种技术的新手。我现在正在做的是尝试扫描DynamoDB表中的数据。我知道如何扫描。但是问题是该列之一具有List数据类型。
我有一个名为item的表,其中包含以下列。
请注意“图像”字段。
在Kotlin Android中,我像这样扫描表格。
val dynamoDBClient = AmazonDynamoDBClient(AWSMobileClient.getInstance().credentialsProvider)
val fetchedItems: ArrayList<Any> = ArrayList();
val scanRequest = ScanRequest().withTableName(MainApplication.DB_TABLE_ITEMS);
scanRequest.exclusiveStartKey = lastEvaluatedKey
val scanResult = dynamoDBClient.scan(scanRequest)
scanResult.items.forEach { item ->
Log.i("ITEM_NAME", item.get("Name")?.s)
val viewItem = ItemDO()
viewItem.id = item.get("Id")?.s
viewItem.description = item.get("Description")?.s
viewItem.name = item.get("Name")?.s
viewItem.userId = item.get("UserId")?.s
viewItem.images = item.get("Images")?.ns
fetchedItems.add(viewItem)
Log.i("IMAGES_COUNT", item.get("Images")?.ns?.size.toString())
}
但是这个
item.get("Images")?.ns
即使该列中存在数据,也总是返回null,如下面的屏幕截图所示。
为什么我的代码没有获取列表数据类型,而是其他?我该如何解决?
答案 0 :(得分:2)
代码看起来不错,并且应该返回所有属性的数据,而与它们的类型无关。我在Java中有等效的代码,可以按预期工作。您可以在进行空安全调用之前尝试检查item.get("Images")
返回的值吗? item.get("Images")
返回的值的类型为AttributeValue
,因此在隐式类型转换过程中可能会丢失该值。