使用KCL 2.x从KinesisStream获取DynamoDB事件的反序列化方法
KCL 2.x 环境下解析KinesisClientRecord中DynamoDB格式JSON的方案
你可以直接使用AWS DynamoDB Java SDK 2.x 内置的工具类完成格式转换,无需依赖KCL 1.x的适配器组件,操作步骤如下:
1. 引入依赖
在项目pom.xml中添加DynamoDB SDK 2.x依赖(如已引入可跳过):
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>dynamodb</artifactId> <version>2.20.150</version> <!-- 可替换为与你项目兼容的2.x任意版本 --> </dependency>
2. 格式转换代码实现
在原有Kinesis记录解码逻辑的基础上,直接调用Item.fromJson()方法即可完成DynamoDB格式JSON到标准结构的转换:
// 你已有的Kinesis记录解码逻辑 String recordData = StandardCharsets.UTF_8.decode(record.data()).toString(); JSONObject kinesisRecordObject = new JSONObject(recordData); // 提取DynamoDB事件中的镜像数据,需要旧数据则提取OldImage字段 JSONObject dynamoNode = kinesisRecordObject.getJSONObject("dynamodb"); JSONObject rawImage = dynamoNode.getJSONObject("NewImage"); // 直接转换为标准结构的Item对象 Item standardItem = Item.fromJson(rawImage.toString()); // 按需读取字段即可,SDK会自动处理类型转换 String orderId = standardItem.getString("order_id"); Long payAmount = standardItem.getLong("pay_amount"); Boolean payStatus = standardItem.getBool("pay_status"); // 若需要完整的标准JSON字符串,可直接调用toJSON方法 String standardJsonStr = standardItem.toJSON();
注意事项
- 该方案原生支持DynamoDB格式JSON的所有类型标识(S/N/BOOL/L/M等),无需手动处理类型映射
- 嵌套结构、集合类型可通过
getMap()、getList()等方法直接读取,不需要额外解析
内容的提问来源于stack exchange,提问作者Akshit Arora
相关产品推荐
相关产品推荐

