带有关联类的java spring json字段

bvjxkvbb  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(381)

我想在spring实体中创建一个json字段,如下所示

  1. @Type(type = "json")
  2. @Column(name = "LIFE_CYCLE_RULES")
  3. private List<S3LifeCycleRule> lifeCycleRules;

但是类s3lifecyclerule具有关联的类

  1. private S3LifeCycleExpiration expiration;
  2. private String id;
  3. private String prefix;
  4. private S3LifeCycleFilter filter;
  5. private Boolean status;
  6. private List<S3LifeCycleTransition> transitions;

S3LifecycleExption.java:

  1. @JsonSerialize
  2. public record S3LifeCycleExpiration(
  3. Instant Date,
  4. int Days,
  5. Boolean ExpiredObjectDeleteMarker
  6. ) {
  7. }

s3lifecycletransition.java:

  1. @JsonSerialize
  2. public record S3LifeCycleTransition(
  3. Instant date,
  4. int days,
  5. S3ObjectStorageClass storageClass
  6. ) {
  7. }

(s3objectstorageclass是一个枚举器)
s3lifecyclefilter.java:

  1. @JsonSerialize
  2. public record S3LifeCycleFilter (
  3. String prefix,
  4. S3LifeCycleTag tag,
  5. S3LifeCycleAnd and
  6. ){
  7. }

s3lifecycletag.java:

  1. @JsonSerialize
  2. public record S3LifeCycleTag(
  3. String key,
  4. String value
  5. ) {}

s3lifecycleand.java:

  1. @JsonSerialize
  2. public record S3LifeCycleAnd(
  3. String prefix,
  4. List<S3LifeCycleTag> tags
  5. ) {
  6. }

在我添加jsonserialize注解之前,应用程序不能完全工作,但是在我添加它之后,字段:expiration、filter和transitions保持为空:
输出json:

  1. [
  2. {
  3. "id": "Life_Cycle_Rule_For_5_Days",
  4. "filter": {},
  5. "prefix": null,
  6. "status": true,
  7. "expiration": {},
  8. "transitions": []
  9. }
  10. ]

谢谢

wecizke3

wecizke31#

您可以尝试向类中添加getter,这将很容易
Lombok @Getter 注解。
如果它不起作用,那么您需要为所有类创建自定义序列化程序,并将它们的注解更改为 @JsonSerialize(using = SomeCustomSerializer.class) 序列化程序演示(参见第2.7段)。
jackson–自定义序列化程序

l2osamch

l2osamch2#

似乎问题出在记录上,在我将它们转换为普通类并添加默认构造函数之后,它就起作用了。
谢谢

相关问题