我需要在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是列表??
答案 0 :(得分:1)
经过两三天的研究后,我发现没有直接方法可以使用这种表示法在DynamoDB中放置set<Info>
之类的内容。
Map<String,AttributeValue> itemsInTable = new HashMap<String, AttributeValue>();
itemsInTable.put("Id", new AttributeValue("123"));
但我们可以选择一些中间方式将Object
转换为JSONObject
或JSONString
并使用
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,我们可以在需要时轻松将其转换为JSONObject
或JSONArray
。
我用这种方式解决了我的问题。