将值添加到DynamoDB表中,并将属性作为对象集

时间:2015-05-21 07:41:46

标签: java amazon-dynamodb

我需要在DynamoDB表中保留一个属性,属性为Set<Some Class>

基本上我需要将该属性放在Map<String,AttributeValue>中。 对于发电情况,我们通常会这样做

Map<String,AttributeValue> itemsInTable = new HashMap<String, AttributeValue>();
        itemsInTable.put("Id", new AttributeValue("123"));

现在假设我有一个Set<Info> Info是一个类。

如何放置那种Attribuute?

并且如果属性Value是列表??

1 个答案:

答案 0 :(得分:1)

经过两三天的研究后,我发现没有直接方法可以使用这种表示法在DynamoDB中放置set<Info>之类的内容。

Map<String,AttributeValue> itemsInTable = new HashMap<String, AttributeValue>();
        itemsInTable.put("Id", new AttributeValue("123"));

但我们可以选择一些中间方式将Object转换为JSONObjectJSONString并使用

放入Map<String,AttributeValue>
 Set<String> set = new HashSet<String>();
 Map<String,AttributeValue> itemsInTable = new HashMap<String, AttributeValue>();
 itemsInTable.put("Id", new AttributeValue().withSS(set));

要将对象转换为jsonString,我们可以获取jackson库的帮助。

导入此:

import zaaa.org.codehaus.jackson.map.ObbjectMapper

定义ObjectMapper

private final ObjectMapper jacksonObjectMapper = new ObjectMapper();

现在假设class为Container,其对应的Object为`container&#39;

现在主要工作是将其转换为jsonString,这可以通过使用writevalueAsString函数轻松完成。

String jsonString = jacksonObjectMapper.writeValueAsString(container)

现在我们有jsonString,我们可以在需要时轻松将其转换为JSONObjectJSONArray

我用这种方式解决了我的问题。