0

从我使用 KCL 客户端获得的 KinesisClientRecord(记录)中,我可以通过执行以下操作从流中获取表示 ddb 更新事件的 JSON 对象:

String recordData = StandardCharsets.UTF_8.decode(record.data()).toString();
JSONObject kinesisRecordObject = new JSONObject(recordData);

现在,我想访问从 dynamoDB 获得的字段,但我无法将其反序列化为 DynamoDB JSON 而不是标准的,正如本文将 DynamoDB JSON 转换为 Standard JSON with Java中所解释的那样。那里给出的解决方案适用于 DynamoDBStreamRecord,但不适用于 KinesisClientRecord(我正在使用)你能告诉我如何实现这一步吗?对于 KCL 1.x,我发现可以使用 KCL Adapter,但我使用的是 KCL 2.x!

如何反序列化它以获取 DDB 更新中的字段?

4

1 回答 1

1

使用 KCL 2 时,您会从 Kinesis 获得 CommittableRecord 对象。从中您需要提取 UTF 8 编码的 records().data()(默认情况下)。解码后得到的 JSON 字符串可以转换成想要的 POJO

像这样的东西

String recordData =
        new StringBuffer(StandardCharsets.UTF_8.decode(committableRecordObject.record().data()))
        .toString();
于 2021-08-03T08:38:05.047 回答