You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将AWS Java SDK V2类序列化为JSON或从JSON反序列化?

AWS Java SDK V2 模型类Jackson序列化/反序列化问题

问题现象

AWS Java SDK V1的模型类都是带标准getter/setter的普通POJO,直接用Jackson序列化/反序列化毫无问题:

TaskDefinition taskDefinition = ecsClient.describeTaskDefinition(new DescribeTaskDefinitionRequest().withTaskDefinition("myTaskDefinition")).getTaskDefinition();
System.out.println(new ObjectMapper().writeValueAsString(taskDefinition));

执行结果:

{"taskDefinitionArn":"...","containerDefinitions":[...]} 

但切换到AWS Java SDK V2后,同样操作会得到空JSON对象:

TaskDefinition taskDefinition = ecsClient.describeTaskDefinition(DescribeTaskDefinitionRequest.builder().taskDefinition("myTaskDefinition").build()).taskDefinition();
System.out.println(new ObjectMapper().writeValueAsString(taskDefinition));

执行结果:

{}

尝试反序列化时还会抛出错误:

Cannot construct instance of `software.amazon.awssdk.services.ecs.model.TaskDefinition` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)

问题原因

AWS Java SDK V2的模型类采用建造者模式实现,没有默认构造器,也不提供标准setter方法,Jackson默认的序列化/反序列化规则无法识别这类类的结构,导致处理失败。

解决方法

AWS官方提供了适配Jackson的专用模块,可让Jackson正确处理V2模型类。

1. 引入依赖

如果用Maven,在pom.xml中添加依赖:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>aws-sdk-java2-jackson</artifactId>
    <version>你的SDK版本号</version>
</dependency>

2. 配置ObjectMapper

创建ObjectMapper时注册AWS提供的模块:

ObjectMapper objectMapper = new ObjectMapper()
        .registerModule(new AwsSdkJackson2Module());

3. 正确序列化/反序列化示例

// 序列化
TaskDefinition taskDefinition = ecsClient.describeTaskDefinition(DescribeTaskDefinitionRequest.builder().taskDefinition("myTaskDefinition").build()).taskDefinition();
String json = objectMapper.writeValueAsString(taskDefinition);
System.out.println(json); // 正常输出完整JSON结构

// 反序列化
TaskDefinition deserializedTaskDef = objectMapper.readValue(json, TaskDefinition.class);

内容的提问来源于stack exchange,提问作者Dasmowenator

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:25:12