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());
}
}