import jdk.incubator.json.*;

public class Walk {
    static String describe(JsonValue v) {
        return switch (v) {
            case JsonObject o  -> "object(" + o.asMap().size() + " members)";
            case JsonArray a   -> "array(" + a.asList().size() + " elements)";
            case JsonString s  -> "string(" + s.asString() + ")";
            case JsonNumber n  -> "number(" + n + ")";
            case JsonBoolean b -> "boolean(" + b.asBoolean() + ")";
            case JsonNull nl   -> "null";
        };
    }
    public static void main(String[] args) {
        JsonValue root = Json.parse("{\"a\":[1,2,3],\"b\":\"hi\",\"c\":true,\"d\":null,\"e\":{\"x\":1.5}}");
        root.asMap().forEach((k, v) -> System.out.println(k + " -> " + describe(v)));
    }
}
