Java中将平面对象重新映射为结构化对象的最佳方法
我正在使用一种名为Verastream Host Integrator的技术。本质上,VHI是一种无代码/低代码GUI工具,用于处理编译成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;
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自定义序列化程序,您仍然需要编写自定义代码。明白了。我也这么想。是的,我已经在手动进行这些操作了,只是想知道是否有更好的方法。