Я пытаюсь найти лучшее решение для разбора моего JSON на карту. Я планирую использовать Jackson и связать его со сложными объектами и сделать некоторые итерации, чтобы создать из него плоскую карту. Пожалуйста, дайте мне знать, есть ли какой-либо простой способ, который поддерживает расширение в будущем
Вход JSON:
Data={
"Name": "IT dept",
"DeptProducts": [
{
"RepresentorsName": "BOB",
"Product": "SOFTWARE",
"Account": "123456",
"AccountType": "Saving"
},
{
"RepresentorsName": "BOB",
"Product": "HARDWARE",
"Account": "1234567",
"AccountType": "Saving"
}
],
"DeptClients": [
{
"ClientName": "GOOGLE",
"ClientRegion": "US",
"ClientCode": "1111"
}
],
"Faculty": [
{
"Name": "Tom",
"Email": null,
"FacultyProducts": [
{
"RepresentorsName": "BOB",
"Product": "SOFTWARE",
"Account": "123456",
"AccountType": "Saving"
},
{
"RepresentorsName": "BOB",
"Product": "HARDWARE",
"Account": "1234567",
"AccountType": "Saving"
}
],
"Righs": [
{
"Product": "SOFTWARE",
"Type": "Local",
"Righs": "ENABLED"
},
{
"Product": "SOFTWARE",
"Type": "Online",
"Righs": "ENABLED"
},
{
"Product": "HARDWARE",
"Type": "Local",
"Righs": "ENABLED"
}
],
"Clients": [
{
"ClientName": "GOOGLE",
"Region": "US",
"AccountType": 2,
"AccountNumber": "123456",
],
"Representors": [
{
"RepresentorsName": "BOB",
"Country": "United States"
}
]
}
],
"Representors": [
{
"RepresentorsName": "BOB",
"Country": "United States"
}
]
}
],
"Representors": [
{
"RepresentorsName": "BOB",
"Country": "United States"
}
]
}
Таким образом, иерархия такая:
Department
-DeptProducts:Array
-DeptClients:Array
-Faculty:Array
-FacultyProducts:Array
-Righs:Array
-Clients:Array
-Representor:Array
-Representor:Array
Итак, я смогу создать карту с ключом = Имя + Продукт + Тип для каждого факультета. Также каждый факультет реплицируется для каждой группы, с которой сопоставлены, и результат снова реплицируется по типу путем сопоставления продуктов. Итак, сверху JSON, мне нужна следующая карта (я представил ее в виде таблицы для упрощенного просмотра и не заполнил всю информацию). Кроме того, если другая информация на уровне факультета отсутствует, ее следует заполнить с уровня факультета, так же как и на уровне факультета (нам нужно сопоставить информацию уровня факультета с департаментом, а затем получить другую информацию соответственно)
+------+-----------------+--------+-------+--------+----+
| Name | FacultyProducts | Type | info1 | info2 | …. |
+------+-----------------+--------+-------+--------+----+
| Tom | SOFTWARE | Local | | | |
| Tom | HARDWARE | Online | | | |
| Tom | HARDWARE | Local | | | |
+------+-----------------+--------+-------+--------+----+