Android 在DynamoDB映射中插入java.lang.Object

Android 在DynamoDB映射中插入java.lang.Object,android,amazon-web-services,amazon-dynamodb,Android,Amazon Web Services,Amazon Dynamodb,我正在使用Android应用程序在DynamoDB中同步数据 我需要插入属性列表 这是我的DynamoDB表结构 public class AmznDynamoDeviceDB { private String identityID; private String deviceName; private List<Map<String, Object>> channels; @DynamoDBHashKey(attributeNa

我正在使用Android应用程序在DynamoDB中同步数据

我需要插入属性
列表

这是我的DynamoDB表结构

public class AmznDynamoDeviceDB {
    private String identityID;    
    private String deviceName;
    private List<Map<String, Object>> channels;

    @DynamoDBHashKey(attributeName = "identityID")
    public String getIdentityId(){
        return this.identityID;
    }
    public void setIdentityId(String identityID){
        this.identityID = identityID;
    }

    @DynamoDBAttribute(attributeName = "deviceName")
    public String getDeviceName(){
        return this.deviceName;
    }
    public void setDeviceName(String deviceName){
        this.deviceName = deviceName;
    }

    @DynamoDBAttribute(attributeName = "channels")
    public List<Map<String, Object>> getChannels(){
        return this.channels;
    }
    public void setChannels(List<Map<String, Object>> channels){
        this.channels = channels;
    }    
}
我可以在DynamoDB的Map元素中插入java.lang.Object吗

注意:如果我使用
@DynamoDBMarshalling
将数据存储为字符串,我需要将其插入为
列表


提前谢谢。

我不知道你在这里找什么。当任何对象进入网络或保存到数据库时;它保存为字符串。。现在,如何实现这一点是使该对象可序列化。。确保您的对象(列表内)实现了可序列化


如果它被保存为数据库中的字符串,您不必担心(因为这将是另一个系统,而不是可以保存java对象的JVM);重要的是当你要求这个目标时;dynamoDB会自动将此对象转换为您所需的列表。

如果您希望将
频道
属性保留为
列表
,简单的答案是您无法将值保存为地图对象列表。唯一可用的解决方案是将数据转换为字符串并存储在DynamoDB中

转换为字符串或JSON的两个选项:-

1)
@DynamoDBTypeConvertedJson
-此注释可用于将数据转换为JSON,并将其作为字符串属性存储在DynamoDB中

W/System.err: com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMappingException: Cannot marshall type class java.lang.Object without a custom marshaler or @DynamoDBDocument annotation.
@DynamoDBMarshalling
-已弃用

2) 编写自定义转换器。同样,这将把数据保存为DynamoDB中的字符串

注意:-

虽然DynamoDB支持文档数据类型,如列表和地图,但如果列表中有地图,则无法查询数据。DynamoDB API不支持筛选此数据模型的数据

如果您需要支持任何用例查询/更新
channels
属性,我强烈建议您重新考虑数据模型,以扁平化数据结构

另一个缺点是无法在文档数据类型(列表和地图)上创建索引