在字段中使用包装器名称序列化对象列表

时间:2016-12-02 15:47:49

标签: java json serialization jackson yaml

我必须序列化第三方类的实例,这些序列化对象将被另一个工具使用。
所以我不能改变课程,他们在第三方图书馆

在我的应用程序中,我使用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"

如何生成我需要的输出?它看起来像一张地图,也许我应该走向那个方向但不确定如何。

0 个答案:

没有答案