Преобразование плоского CSV в иерархический JSON с использованием java jackson API

#java #json #csv #jackson

#java #json #csv #джексон

Вопрос:

У меня есть CSV, определенный как показано ниже.

 employee.name,employee.age,employee.dept.name,employee.dept.id,employee.dept.address.firstLine,employee.dept.address.postCode
 Джон Доу, 28 лет, отдел продаж, 1001, 21-я улица, WX2 2XV
 Сэм Смит, 22 года, ИТ, 2001, 22-я улица, XX2 2VV

Я хотел бы преобразовать приведенный выше CSV в следующую структуру JSON

 [ 
 "сотрудник":{
 "имя": "Джон Доу", 
 "возраст": 28
 }, 
 "отдел":{
 "имя":"Продажи", 
"id": 1001, 
 "адрес":{
 "Первая строка": 21-я улица, 
 "Почтовый индекс": WX22XV
 }
 }
 "сотрудник":{
 "имя": "Сэм Смит", 
 "возраст": 22
 }, 
 "отдел":{
 "name":"ЭТО", 
"идентификатор": 2001, 
 "адрес":{
 "Первая строка": 22STREET, 
 "Почтовый индекс": XX22VV
 }
 }
 ]

Так что мой Jackson ObjectMapper использует JSON и преобразует его в следующий объект Employee.

 сотрудник класса {
 Имя строки;
 возраст;
 Отдел dept;
 }


 Отдел классов {
 Имя строки;
 Идентификатор int;
 Адрес адрес;
 }


 Адрес класса {
 Строка первой строки;
 Почтовый индекс строки; 
 }

Я использовал CSVMapper для загрузки файла CSV, но не смог найти прямой способ преобразования в ObjectMapper, чтобы я мог создавать базовые объекты Java.

Предполагается, что заголовок CSV содержит фактические имена атрибутов и объектов.

Пожалуйста, примите мою благодарность заранее.

Я не хочу использовать аннотации, и мне нужно преобразовать этот CSV в устаревшие объекты Java.

Комментарии:

1. Я не могу помочь вам с JSON, но, пожалуйста, проверьте ваш пример на наличие опечаток. Ваш адрес для сопоставления объектов Jackson в первой строке, а сотрудник JSON не является empoloyee.

2. Для меня JSON выглядит немного странно.. Разве вы не хотите иметь массив JSON вместо одного объекта json, содержащего данные сотрудника, отдела?