private Object convertValue()

in src/main/java/org/apache/sling/contentparser/json/internal/JSONContentParser.java [167:203]


    private Object convertValue(ParserOptions parserOptions, JsonValue value) {
        switch (value.getValueType()) {
            case STRING:
                String stringValue = ((JsonString) value).getString();
                if (parserOptions.isDetectCalendarValues()) {
                    Calendar calendar = ParserHelper.parseDate(stringValue);
                    if (calendar != null) {
                        return calendar;
                    }
                }
                return stringValue;
            case NUMBER:
                JsonNumber numberValue = (JsonNumber) value;
                if (numberValue.isIntegral()) {
                    return numberValue.longValue();
                } else {
                    return numberValue.bigDecimalValue();
                }
            case TRUE:
                return true;
            case FALSE:
                return false;
            case NULL:
                return null;
            case ARRAY:
                JsonArray arrayValue = (JsonArray) value;
                Object[] values = new Object[arrayValue.size()];
                for (int i = 0; i < values.length; i++) {
                    values[i] = convertValue(parserOptions, arrayValue.get(i));
                }
                return ParserHelper.convertSingleTypeArray(values);
            case OBJECT:
                return value;
            default:
                throw new IllegalArgumentException("Unexpected JSON value type: " + value.getValueType());
        }
    }