У меня есть ObjectNode
как входной параметр, и я не знаю точной структуры этого узла. Я имею в виду, что он может иметь любое количество слоев внутри, от очень простого массива от NameValuePair<String,String>
до сложной структуры, такой как HashMap<String,Object>
. Как я могу разобрать его на простую плоскую структуру, например массив из NameValuePair<String,String>
? Я сделал это раньше для ObjectNodes
с известной структурой, но теперь я понятия не имею.Получить структуру строки из многоуровневого ObjectNode
Я ценю любую помощь и любые идеи.
Добавление деталей: , например, если я знаю, что внутри ObjectNode я всегда найти только HashMap<String,String>
, и это все, что я могу просто сделать:
ObjectNode parametersNode = (ObjectNode) request.get("parameters");
Iterator fieldNames = parametersNode.getFieldNames();
HashMap<String,String> oldParams = new HashMap<String,String>();
while (fieldNames.hasNext()) {
String name = (String) fieldNames.next();
oldParams.put(name, parametersNode.get(name).asText());
}
Но что, если структура этого ObjectNode это своего рода черный ящик? Я не знаю, есть карта или массив, или куча карт внутри Карты. Это может быть из разных источников, и я не знаю, какую структуру я получу в любой момент. это может быть:
{
"name":"value",
"name1":"value1"
}
или
{
"name":"value",
"arg1": [
"name1":"value1",
"name1":"value1"
]
}
или
{
"name":"value",
"arg1": [
{"name1":"value1"},
{"name1":"value1"}
]
}
или любой более сложную структуру. И у меня нет информации заранее, что я получаю. Как преобразовать такой черный ящик ObjectNode в плоский массив пар имя-значение? Есть ли универсальный алгоритм?
В конце концов, я должен получить простую структуру, как, что независимо от сложности исходной структуры:
{
"name":"value",
"name1":"value1",
"name2":"value2"
}
Пожалуйста, добавьте еще некоторые детали, некоторый код слишком – Coffee
@Coffee я редактировал мое сообщение, он делает больше смысла Теперь? –
Не могли бы вы показать желаемый результат для всех приведенных вами примеров? –