JsonObject getJson()

in src/main/java/org/apache/sling/servlets/post/JakartaJSONResponse.java [133:198]


    JsonObject getJson() {
        JsonObjectBuilder jsonBuilder = Json.createObjectBuilder();
        for (Map.Entry<String, Object> entry : json.entrySet()) {
            Object value = entry.getValue();
            if (value instanceof String) {
                jsonBuilder.add(entry.getKey(), (String) entry.getValue());
            } else if (value instanceof Boolean) {
                jsonBuilder.add(entry.getKey(), (Boolean) value);
            } else if (value instanceof BigInteger) {
                jsonBuilder.add(entry.getKey(), (BigInteger) value);
            } else if (value instanceof BigDecimal) {
                jsonBuilder.add(entry.getKey(), (BigDecimal) value);
            } else if (value instanceof Byte) {
                jsonBuilder.add(entry.getKey(), (Byte) value);
            } else if (value instanceof Short) {
                jsonBuilder.add(entry.getKey(), (Short) value);
            } else if (value instanceof Integer) {
                jsonBuilder.add(entry.getKey(), (Integer) value);
            } else if (value instanceof Long) {
                jsonBuilder.add(entry.getKey(), (Long) value);
            } else if (value instanceof Double) {
                jsonBuilder.add(entry.getKey(), (Double) value);
            } else if (value instanceof Float) {
                jsonBuilder.add(entry.getKey(), (Float) value);
            } else if (value == null) {
                jsonBuilder.addNull(entry.getKey());
            } else {
                jsonBuilder.add(entry.getKey(), jsonCached.get(entry.getKey()));
            }
        }
        if (this.error != null) {
            jsonBuilder.add(
                    "error",
                    Json.createObjectBuilder()
                            .add("class", error.getClass().getName())
                            .add("message", error.getMessage()));
        }
        JsonArrayBuilder changesBuilder = Json.createArrayBuilder();
        if (this.error == null) {
            for (Map<String, Object> entry : changes) {
                JsonObjectBuilder entryBuilder = Json.createObjectBuilder();
                entryBuilder.add(PROP_TYPE, (String) entry.get(PROP_TYPE));

                Object arguments = entry.get(PROP_ARGUMENT);

                if (arguments != null) {
                    if (arguments instanceof List) {
                        JsonArrayBuilder argumentsBuilder = Json.createArrayBuilder();

                        for (String argument : ((List<String>) arguments)) {
                            if (argument != null) {
                                argumentsBuilder.add(argument);
                            }
                        }

                        entryBuilder.add(PROP_ARGUMENT, argumentsBuilder);
                    } else {
                        entryBuilder.add(PROP_ARGUMENT, (String) arguments);
                    }
                }
                changesBuilder.add(entryBuilder);
            }
        }
        jsonBuilder.add(PROP_CHANGES, changesBuilder);
        return jsonBuilder.build();
    }