package io.github.jamsesso.jsonlogic.utils; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public final class JsonValueExtractor { private JsonValueExtractor() { } public static Object extract(JsonElement element) { if (element.isJsonObject()) { Map<String, Object> map = new HashMap<>(); JsonObject object = element.getAsJsonObject(); for (String key : object.keySet()) { map.put(key, extract(object.get(key))); } return map; } else if (element.isJsonArray()) { List<Object> values = new ArrayList<>(); for (JsonElement item : element.getAsJsonArray()) { values.add(extract(item)); } return values; } else if (element.isJsonNull()) { return null; } else if (element.isJsonPrimitive()) { JsonPrimitive primitive = element.getAsJsonPrimitive(); if (primitive.isBoolean()) { return primitive.getAsBoolean(); } else if (primitive.isNumber()) { return primitive.getAsNumber().doubleValue(); } else { return primitive.getAsString(); } } return element.toString(); } }