Мне нужно получить следующую структуру в результате сериализации
[
{
"employee_name":Joris",
"working_since":2013-02-20T14:28:00Z",
"tasks:": [
{
"start_date": "2015-12-23T14:50:48Z",
"task_name": "CLEAN"
},
{
"start_date": "2016-02-11T11:57:00Z",
"task_name": "WRITE"
}
],
"employee_name":Alex",
"working_since":2017-11-14T15:23:15Z",
"tasks:": [
{
"start_date": "2018-06-20T11:50:49Z",
"task_name": "SELL"
}
]
}
]
У меня есть TreeMap (ключ - Сотрудник, значение - Список задач) для этого. Карта группируется по сотруднику, и у меня нет проблем с сериализацией значения, но у меня проблема с сериализацией ключа карты. Джексон всегда использует метод toString () класса Employee для сериализации. Класс сотрудников ниже:
public class Employee {
private int id;
private String name;
@JsonFormat(
shape = JsonFormat.Shape.STRING,
pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'")
private Date working_since;
public Employee(int id, String name, Date working_since) {
this.id = id;
this.name = name;
this.working_since = working_since;
}
public Employee() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getWorking_since() {
return active_since;
}
public void setWorking_since(Date Working_since) {
this.working_since = working_since;
}
@Override
public String toString() {
String string = String.format("employee_name\":\"%s\",\"working_since\":\"%s\",\"tasks",
getName(), new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(getWorking_since()));
return string;
}
}
У меня есть метод сериализации
public class JsonProcessor {
public JsonStreamProcessor() {
}
@Override
public void process(InputStream source, OutputStream output) throws IOException {
Map<Picker, List<Pick>>tasks = new TreeMap<Employer, List<Task>>();
tasks.put(...);
tasks.put(...);
tasks.put(...);
JSONHelper.writeObject(output, tasks);
}
Мой класс JSONHelper следующий:
public class JSONHelper {
private static ObjectMapper objectMapper = new ObjectMapper();
public static void writeObject(OutputStream outputStream, Object object) {
Object[] objectToJson = new Object[] {object};
try {
objectMapper.writeValue(outputStream, objectToJson);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}
Я пытался использовать CustomSerializer, ноЯ не понимал, как настроить это для использования с пользовательским ключом карты и как создать структуру json, которая совместима с требуемой структурой json.
Спасибо за помощь!