package org.mafagafogigante.dungeon.util; import com.eclipsesource.json.JsonObject; import com.eclipsesource.json.JsonValue; import java.util.ArrayList; import java.util.List; public final class JsonElementSearchUtil { private JsonElementSearchUtil() { throw new AssertionError(); } /** * Searches JSON values by attribute name in recursion. */ public static List<JsonValue> searchJsonValueByAttributeName(JsonObject jsonObject, String elementNameForSearch) { List<JsonValue> resultJsonValues = new ArrayList<>(); recursionJsonValueSearchByAttributeName(resultJsonValues, jsonObject, elementNameForSearch); return resultJsonValues; } private static List<JsonValue> recursionJsonValueSearchByAttributeName(List<JsonValue> accumulationJsonValueList, JsonObject jsonObject, String jsonElementName) { for (String name : jsonObject.names()) { JsonValue jsonValue = jsonObject.get(name); if (name.equals(jsonElementName)) { accumulationJsonValueList.add(jsonValue); } else if (jsonValue.isObject()) { recursionJsonValueSearchByAttributeName(accumulationJsonValueList, jsonValue.asObject(), jsonElementName); } else if (jsonValue.isArray()) { List<JsonValue> arrayValues = jsonValue.asArray().values(); for (JsonValue arrayValue : arrayValues) { recursionJsonValueSearchByAttributeName(accumulationJsonValueList, arrayValue.asObject(), jsonElementName); } } } return accumulationJsonValueList; } }