Lombok的@builder注释为类创建构建器类。为了支持 json 项的反序列化(使用Jackson 的 ObjectMapper),我添加了以下注释:
@Builder
@JsonDeserialize(builder = Item.ItemBuilder.class)
@JsonPOJOBuilder(withPrefix="")
public class Item {
@Getter
String partitionvalue;
}
Run Code Online (Sandbox Code Playgroud)
这是基于@Jacksonized 文档的。关于反序列化器的使用,在存储在AWS S3存储桶中的json文件上,其内容很简单:{"partitionvalue": "test"},我的代码是:
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new DefaultAWSCredentialsProviderChain())
.withRegion(region)
.build();
S3Object s3Object = s3Client.getObject(new GetObjectRequest(bucket, key));
Item item = objectMapper.readValue(s3Object.getObjectContent(), Item.class);
Run Code Online (Sandbox Code Playgroud)
但是,当在 json 文件上运行时,Jackson 失败并显示以下消息:
Unrecognized field "partitionvalue" (class com.example.Test$TestBuilder),
not marked as ignorable (0 known properties: ])
at [Source: com.amazonaws.services.s3.model.S3ObjectInputStream@2ca47471; line: 1, column: 21] (through …Run Code Online (Sandbox Code Playgroud)