我必须序列化第三方类的实例,这些序列化对象将被另一个工具使用。
所以我不能改变课程,他们在第三方图书馆
在我的应用程序中,我使用Jackson(com.fasterxml.jackson)和ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)进行序列化。
我的班级有员工名单
我有一个员工列表(List)和消耗的工具想要员工标识符来包装员工对象,就像它是一个Map。见下文。
第三方课程:
class Employee{
String id;
String location;
String department;
}
class Division{
List<Employee> employees;
}
目前我正在使用Mixin界面隐藏其他一些我不需要的字段;
interface EmployeeMixin {
@JsonProperty String getId();
@JsonProperty("location") String getLocation();
@JsonProperty("department") String getDepartment();
}
将mixin添加到Object Mapper中,如下所示:`
ObjectMapper myYamlMapper=Jackson.newObjectMapper(new YAMLFactory());
myYamlMapper.addMixIn(Employee.class, EmployeeMixin.class);
我使用对象映射器生成的是:
employees:
- id: "sales0051"
location: "london"
department: "sales"
虽然我应该产生的输出如下:
employees:
sales0051:
location: "london"
department: "sales"
如何生成我需要的输出?它看起来像一张地图,也许我应该走向那个方向但不确定如何。