用lombok和jackson预处理json。

问题描述 投票:1回答:1

我正在使用lombok和jackson一起使用。我需要用这个结构预处理一个json。顺便说一下,我不能改变json结构。

[
    {
        "value1": "INC12345",
        "value2": "12345",
        "task": [
            {
                "status": "A",
                "typeOfClass": "Membership"
            },
            {
                "status": "D",
                "reverseEnum": 1,
                "typeOfClass": "Reverse"
            }
        ]
    }
]

问题出在哪里?好吧,我需要在收到请求时处理任务的列表,用属性定义每个任务的对象类型。typeOfClass 因为我使用了不同类型的类,可以接收一个Membership的类型,一个Reverse的类型等等,而这些类没有任何共同点。这是我的java类。

@Data
@JsonDeserialize(builder = Incident.IncidentBuilder.class)
@Builder(builderClassName = "IncidentBuilder", toBuilder = true)
public class Incident {

  @NotNull
  private String value1;

  @NotNull
  private BigInteger value2;

  @NotNull
  private List<Object> task;

  @JsonPOJOBuilder(withPrefix = "")
  public static class IncidentBuilder {
  }

}

我在其他属性上没有问题,但是当我在调试时,我可以看到任务列表是一个很好的类。LinkedList所以我需要对该列表进行预处理,以创建一个包含特定类型对象的列表。我知道如何使用jackson创建一个自定义的反序列器,我正在寻找一个类似的解决方案,使用lombok来避免大量的代码。

我想一个构建器可以帮助我,但是我已经迷失了方向,不能为我的问题写一个好的解决方案。

java json rest jackson lombok
1个回答
0
投票

Javaజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ List 是一个对象的集合,它们属于同一个 class 型。

由于您的 Type 元素包含了它所属的对象,我认为,有一个顶层的父类,它是所有的 type 对象。

所以,与其将它声明为 List<Object> task我建议你使用 List<ParentClass> task.

© www.soinside.com 2019 - 2024. All rights reserved.