Java中将平面对象重新映射为结构化对象的最佳方法

Java中将平面对象重新映射为结构化对象的最佳方法,java,json,spring,spring-boot,jackson,Java,Json,Spring,Spring Boot,Jackson,我正在使用一种名为Verastream Host Integrator的技术。本质上,VHI是一种无代码/低代码GUI工具,用于处理编译成Java绑定的大型机数据。 VHI的一个问题是它只能输出平面数据。以下是一个例子: public class VhiProcedureRecord { private String foo1; private String foo2; private String bar1; private String bar2;

我正在使用一种名为Verastream Host Integrator的技术。本质上,VHI是一种无代码/低代码GUI工具,用于处理编译成Java绑定的大型机数据。
VHI的一个问题是它只能输出平面数据。以下是一个例子:

public class VhiProcedureRecord {
    private String foo1;
    private String foo2;
    private String bar1;
    private String bar2;

    // constructors, getters, and setters
}
我正在通过Spring引导中间件层将此输出管道化,我希望将此对象重新映射到如下内容:

public class Foo {
    private String foo1;
    private String foo2;

    // constructors, getters, and setters
}

public class Bar {
    private String bar1;
    private String bar2;

    // constructors, getters, and setters
}

public class MyRecord {
    private Foo foo;
    private Bar bar;

    // constructors, getters, and setters
}
如您所见,这需要将
VhiProcedureRecord
中的字段拆分为
Foo
Bar
。 手动操作很快就会成为一种巨大的痛苦

输出平坦的另一个问题是,当VHI输出包含一个数据列表时,它返回多个具有重复字段的记录,类似于SQL连接的外观,例如

public class VhiPetOwnershipRecord {
    private String ownerName;
    private String petName;

    // constructors, getters, and setters
}
此过程的结果返回类似以下内容:

[
  {"ownerName": "JHuang", "petName": "Fido"},
  {"ownerName": "JHuang", "petName": "Spot"}
]
我想把它重新映射到:

public class MyPetOwnershipRecord {
    private String ownerName;
    private List<String> petName;
}
公共类MyPetOwnershipRecord{
私有字符串所有者名称;
私人名单名称;
}
有没有一种方法可以使用Jackson或类似的东西来自动进行这种重新映射


请记住,
VhiProcedureRecord
是由VHI编译的,因此类不能更改。

除非您有数百个平面图文件,否则最好手动将平面图文件转换为Java类。您正在编写代码,该代码需要测试。我不确定使用Jackson注释是否可以实现您的目标,但正如您所说的,您不允许更改
VhiProcedureRecord
,该选项不存在。所以,即使您编写jackson自定义序列化程序,您仍然需要编写自定义代码。明白了。我也这么想。是的,我已经在手动进行这些操作了,只是想知道是否有更好的方法。