diff --git a/pom.xml b/pom.xml index fdabfee..641553c 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ UTF-8 1.8 1.8 - 6e87b0dbdf + 07041c56da 1.3 5.7.1 4.4 diff --git a/src/main/java/io/frictionlessdata/datapackage/Package.java b/src/main/java/io/frictionlessdata/datapackage/Package.java index e191aa1..bd3b917 100644 --- a/src/main/java/io/frictionlessdata/datapackage/Package.java +++ b/src/main/java/io/frictionlessdata/datapackage/Package.java @@ -438,22 +438,39 @@ public Object getProperty(String key) { } JsonNode jNode = jsonObject.get(key); if (jNode.isArray()) { - return JsonUtil.getInstance().deserialize(jNode, new TypeReference>() {}); + return getProperty(key, new TypeReference>() {}); } else if (jNode.isTextual()) { - return JsonUtil.getInstance().deserialize(jNode, new TypeReference() {}); + return getProperty(key, new TypeReference() {}); } else if (jNode.isBoolean()) { - return JsonUtil.getInstance().deserialize(jNode, new TypeReference() {}); + return getProperty(key, new TypeReference() {}); } else if (jNode.isFloatingPointNumber()) { - return JsonUtil.getInstance().deserialize(jNode, new TypeReference() {}); + return getProperty(key, new TypeReference() {}); } else if (jNode.isIntegralNumber()) { - return JsonUtil.getInstance().deserialize(jNode, new TypeReference() {}); + return getProperty(key, new TypeReference() {}); } else if (jNode.isObject()) { - return JsonUtil.getInstance().deserialize(jNode, new TypeReference() {}); + return getProperty(key, new TypeReference() {}); } else if (jNode.isNull() || jNode.isEmpty() || jNode.isMissingNode()) { return null; } return null; } + + public Object getProperty(String key, TypeReference typeRef) { + if (!this.jsonObject.has(key)) { + return null; + } + JsonNode jNode = jsonObject.get(key); + return JsonUtil.getInstance().deserialize(jNode, typeRef); + } + + public Object getProperty(String key, Class clazz) { + if (!this.jsonObject.has(key)) { + return null; + } + JsonNode jNode = jsonObject.get(key); + return JsonUtil.getInstance().deserialize(jNode, clazz); + } + /** * Set a property and value on the Package. The value will be converted to a JsonObject and added to the * datapackage.json on serialization