in src/main/java/org/apache/sling/bundleresource/impl/BundleResource.java [197:234]
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;
}