in src/main/java/org/apache/sling/bundleresource/impl/BundleResource.java [189:219]
private static Object getValue(final JsonValue value, final boolean topLevel) {
switch ( value.getValueType() ) {
// type NULL -> return null
case NULL : return null;
// type TRUE or FALSE -> return boolean
case FALSE : return false;
case TRUE : return true;
// type String -> return String
case STRING : return ((JsonString)value).getString();
// type Number -> return long or double
case NUMBER : final JsonNumber num = (JsonNumber)value;
if (num.isIntegral()) {
return num.longValue();
}
return num.doubleValue();
// type ARRAY -> return list and call this method for each value
case ARRAY : final List<Object> array = new ArrayList<>();
for(final JsonValue x : ((JsonArray)value)) {
array.add(getValue(x, false));
}
return array;
// type OBJECT -> return map
case OBJECT : final Map<String, Object> map = new HashMap<>();
final JsonObject obj = (JsonObject)value;
for(final Map.Entry<String, JsonValue> entry : obj.entrySet()) {
map.put(entry.getKey(), getValue(entry.getValue(), false));
}
return map;
}
return null;
}