Я работаю с технологией 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 Boot и хочу переназначить этот объект во что-то, что будет выглядеть так:
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;
}
Is Есть ли способ использовать Джексона или что-то подобное для автоматического перераспределения такого рода?
Имейте в виду, что VhiProcedureRecord
компилируется VHI, поэтому класс нельзя изменить.