Пытается выяснить, как создать вложенный JSON на основе HashMap.В основном у меня есть список HashMap, который имеет неуникальные пары ключ / значение.И мне нужно превратить этот список HashMap в уникальный объект JSON.
Вот пример того, что я пытаюсь описать: Список HashMap выглядит так:
[
{PERIOD: 201801, ID: 12345},
{PERIOD: 201801, ID: 12346},
{PERIOD: 201801, ID: 12347},
{PERIOD: 201802, ID: 12345},
{PERIOD: 201802, ID: 12347},
{PERIOD: 201803, ID: 12345},
]
ИЯ хотел бы, чтобы мой результат был:
{
"NAME": "Results",
"DETAILS": [
{
"PERIOD": 201801,
"DETAILS": [
{ "ID": 12345 },
{ "ID": 12346 },
{ "ID": 12347 }
},
{
"PERIOD": 201802,
"DETAILS": [
{ "ID": 12345 },
{ "ID": 12347 }
},
{
"PERIOD": 201803,
"DETAILS": [
{ "ID": 12345 }
}
]
}
Одно предостережение: пара ключ / значение в HashMap может содержать любое количество элементов, а не только два, как я описал в примере выше.Я пытался выполнить рекурсивную функцию, но продолжаю бить по стене.
Редактировать: Это не дубликат этого вопроса .Я знаю, как сериализовать HashMap в JsonObject, используя эти методы.Я делал это несколько раз.Я спрашиваю, как логически анализировать данные в HashMap и создавать JsonObject на основе этой логики.
Редактировать 2: Пример нескольких уровней:
[
{PERIOD: 201801, ID: 12345, MANAGER: "Dave"},
{PERIOD: 201801, ID: 12345, MANAGER: "Jill"},
{PERIOD: 201801, ID: 12346, MANAGER: "Dave"},
{PERIOD: 201801, ID: 12347, MANAGER: "Jon"},
{PERIOD: 201802, ID: 12345, MANAGER: "Rob"},
{PERIOD: 201802, ID: 12347, MANAGER: "Dave"},
{PERIOD: 201803, ID: 12345, MANAGER: "Bailey"},
]
И вотJSON:
{
"NAME": "Results",
"DETAILS": [
{
"PERIOD": 201801,
"DETAILS": [
{
"ID": 12345,
"DETAILS": [
"MANAGER": "Dave",
"MANAGER": "Jill"
]
},
{
"ID": 12346,
"DETAILS": [
"MANAGER": "Dave"
]
},
{
"ID": 12347,
"DETAILS": [
"MANAGER": "Jon"
]
}
},
{
"PERIOD": 201802,
"DETAILS": [
{
"ID": 12345,
"DETAILS": [
"MANAGER": "Rob"
]
},
{
"ID": 12347,
"DETAILS": [
"MANAGER": "Dave"
]
}
},
{
"PERIOD": 201803,
"DETAILS": [
{
"ID": 12345,
"DETAILS": [
"MANAGER": "Bailey"
]
}
}
]
}