You need to enable JavaScript to run this app. 使用KCL 2.x从KinesisStream获取DynamoDB事件的反序列化方法
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 00:24:02