我从AWS DynamoDB收到JSON。 我无法访问嵌套项目。
我试图检索两个字段,' session_nr'和来自此JSON的' session_type_name':
{content={S: {"session_nr":"PG8","session_name":"Title of this session","session_type_name":"blah blah name type"},}}
这是每条记录的显示方式。 到目前为止,这是我使用AWS ScanResult的代码:
ScanRequest scanRequest = new ScanRequest()
.withTableName("table_name")
.withFilterExpression("field = :val")
.withProjectionExpression("content")
.withExpressionAttributeValues(expressionAttributeValues);
ScanResult scanResult = client.scan(scanRequest);
for (Map<String, AttributeValue> item : scanResult.getItems()) {
System.out.println(item);
}
答案 0 :(得分:1)
JSON值可以如下获得。我使用了Jackson库中的ObjectMapper
类将JSON转换为Map。
请添加代码以相应地处理异常。
Map<String, Object> jsonMap = objectMapper.readValue(item.get("content").getS(), Map.class);
System.out.println(jsonMap.get("session_nr"));
System.out.println(jsonMap.get("session_name"));
杰克逊依赖: -
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.1</version>
</dependency>
答案 1 :(得分:1)
这是有效的。谢谢@notionquest
ObjectMapper mapper = new ObjectMapper();
for (Map<String, AttributeValue> item : scanResult.getItems()) {
Map<String, Object> map = mapper.readValue(item.get("content").getS(), new TypeReference<Map<String,Object>>(){});
System.out.println(map.get("session_nr"));
}