如何使用值为@DynamoDBDocument类的HashMap类型@DynamoDBAttribute及存储验证
问题1:上述写法是否可以正常生效?
可以正常生效。
你给Config类添加的@DynamoDBDocument注解已经告知DynamoDB Mapper该类需要序列化为嵌套文档结构,AWS Java SDK的DynamoDB Mapper原生支持Map<String, 自定义文档类>的字段类型,不需要额外添加序列化/反序列化配置即可正常读写。
问题2:对于给出的JSON数据,DynamoDB中最终生成的对应条目是什么结构?
首先需要注意:你给出的JSON结构和你定义的MyItem类结构不匹配。MyItem类中配置项是存储在名为configs的Map字段中,而你给出的JSON把a_config_key放在了根层级,这种情况下DynamoDB Mapper会默认忽略类中未定义的根字段a_config_key,最终存储的条目只有两个字段:
{ "hash_key": "123", "some_attribute": "attribute_value" }
如果你将JSON调整为符合MyItem结构的格式(如下):
{ "hash_key":"123", "some_attribute":"attribute_value", "configs": { "a_config_key" : { "field":"field_value" } } }
那么DynamoDB中最终存储的条目结构为:
{ "hash_key": { "S": "123" }, "some_attribute": { "S": "attribute_value" }, "configs": { "M": { "a_config_key": { "M": { "field": { "S": "field_value" } } } } } }
如果通过控制台查看或者调用接口取回原生数据,会展示为上述带类型标识的结构,如果你用Mapper直接读取转回MyItem对象,则会自动映射回你定义的Java类结构。
内容的提问来源于stack exchange,提问作者BryceLanglotz
相关产品推荐
相关产品推荐

