Как десериализовать JSON в плоскую, похожую на карту структуру?
Имейте в виду, что структура JSON заранее неизвестна, то есть она полностью произвольна, мы знаем только, что это формат JSON.
Например,
Следующий JSON
{
"Port":
{
"@alias": "defaultHttp",
"Enabled": "true",
"Number": "10092",
"Protocol": "http",
"KeepAliveTimeout": "20000",
"ThreadPool":
{
"@enabled": "false",
"Max": "150",
"ThreadPriority": "5"
},
"ExtendedProperties":
{
"Property":
[
{
"@name": "connectionTimeout",
"$": "20000"
}
]
}
}
}
Должны быть десериализованы в структуру, подобную Map, имеющую ключи наподобие (не все вышеперечисленное включено для краткости):
port[0].alias
port[0].enabled
port[0].extendedProperties.connectionTimeout
port[0].threadPool.max
Сейчас я смотрю на Джексона, поэтому у нас есть:
TypeReference typeRef = new TypeReference() {};
Map o = objectMapper.readValue(jsonString, typeRef);
Тем не менее, получающийся в результате экземпляр Map представляет собой карту вложенных карт:
{Port={@alias=diagnostics, Enabled=false, Type=DIAGNOSTIC, Number=10033, Protocol=JDWP, ExtendedProperties={Property={@name=suspend, $=n}}}}
Пока мне нужна плоская карта с использованием плоских ключейточечная нотация, как указано выше.
Я бы предпочел не реализовывать это сам, хотя на данный момент я нене вижу другого пути ...