【发布时间】:2022-08-17 01:03:37
【问题描述】:
日志审计方法试图将复杂的 json 字符串转换为 map 以将数据以 json 的形式存储到 dynamodb 表中,但以错误 java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.amazonaws.services.dynamodbv2 结尾。模型.属性值
类审计服务{
@Autowired
AuditRepository auditRepository;
ObjectMapper mapper = new ObjectMapper();
public void logAudit(HttpServletRequest httpServletRequest, HttpServletResponse servletResponse) {
Audit audit= new Audit();
// coverting complex json string to map with help of mapper
audit.setEncryptedRequest(mapper.readValue(complex_multiLevel_json_String, new TypeReference<Map>() {})
audit.save();
}
}
@Setter
@Getter
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@DynamoDBTable(tableName = \"Audit\")
class Audit{
------
------
------
private Map<String, AttributeValue> encryptedRequest;
@DynamoDBTyped(DynamoDBMapperFieldModel.DynamoDBAttributeType.M)
public Map<String, AttributeValue> getEncryptedRequest() {
return encryptedPiiRequest;
}
public void setEncryptedPiiRequest(Map<String, AttributeValue> encryptedRequest) {
this.encryptedRequest = encryptedRequest;
}
}
complex json string which need to store into dynamo db table in the form of map:
注意:我们不想创建具有以下 json 属性作为字段的模型类,然后将这些模型类存储到 dynamo db
\"{
\"customers\": [
{
\"applicant\": {
\"fName\": \"Duck\",
\"lName\": \"PJOHN\",
\"dob\": \"19270101\",
\"ssn\": \"666455649\",
\"suffix\": \"\"
},
\"phone\": [
{
\"number\": 4239506,
\"type\": \"R\"
}
],
\"cAddress\": {
\"line1\": \"5 LONG DR\",
\"zipCode\": 37604
},
\"pAddress\": {
\"line1\": \"100, Main St\",
\"Code\": 12345
}
}
],
\"iteam\": {
\"Source\": \"amazon\",
\"Type\": \"BOTH\"
}
}\"
error:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.amazonaws.services.dynamodbv2.model.AttributeValue
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$Rules$NativeType.set(StandardModelFactories.java:212) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$AbstractRule.convert(StandardModelFactories.java:709) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$AbstractRule.convert(StandardModelFactories.java:691) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$DelegateConverter.convert(DynamoDBTypeConverter.java:104) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$NullSafeConverter.convert(DynamoDBTypeConverter.java:123) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$DelegateConverter.convert(DynamoDBTypeConverter.java:104) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$Rules$1.convert(StandardModelFactories.java:682) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$Rules$1.convert(StandardModelFactories.java:680) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardTypeConverters$Vector$ToMap.convert(StandardTypeConverters.java:425) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardTypeConverters$Vector$ToMap$1.convert(StandardTypeConverters.java:413) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardTypeConverters$Vector$ToMap$1.convert(StandardTypeConverters.java:410) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$DelegateConverter.convert(DynamoDBTypeConverter.java:104) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$NullSafeConverter.convert(DynamoDBTypeConverter.java:123) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$ExtendedConverter.convert(DynamoDBTypeConverter.java:83) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperFieldModel.convert(DynamoDBMapperFieldModel.java:138) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.execute(DynamoDBMapper.java:739) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:641) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.AbstractDynamoDBMapper.save(AbstractDynamoDBMapper.java:123) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at org.socialsignin.spring.data.dynamodb.core.DynamoDBTemplate.save(DynamoDBTemplate.java:146) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
at org.socialsignin.spring.data.dynamodb.repository.support.SimpleDynamoDBCrudRepository.save(SimpleDynamoDBCrudRepository.java:115) ~[spring-data-dynamodb-5.1.0.jar:5.
标签: java amazon-web-services spring-boot amazon-dynamodb microservices