@Override public Map<String, Object> readProfile() throws IOException { JsonElement parseTree = null; try { fr = new FileReader(_dir + File.separator + "profile"); parseTree = _parser.parse(fr); } catch (Exception e) { _logger.error("Json file problem", e); /*SURE !? */ return null; } finally { if (fr != null) { fr.close(); } } Set<Map.Entry<String, JsonElement>> set = null; try { set = parseTree.getAsJsonObject().entrySet(); } catch (IllegalStateException e) { _logger.error("Bad state of Json input. Node: " + _dir + File.separator + "profile", e); return null; } Map<String, Object> properties = new HashMap<String, Object>(set.size()); for (Map.Entry<String, JsonElement> entry : set) { String tmp = null; if (entry.getValue().isJsonPrimitive()) { JsonPrimitive primitive = entry.getValue().getAsJsonPrimitive(); if (primitive.isNumber()) { properties.put(entry.getKey(), primitive.getAsNumber().longValue()); } else if (primitive.isBoolean()) { properties.put(entry.getKey(), primitive.getAsBoolean()); } else if (primitive.isString()) { tmp = primitive.toString(); properties.put(entry.getKey(), tmp.substring(1, tmp.length() - 1)); } else { throw new IllegalStateException("Primitive is in illegal state!"); } /*And we go for next entry!*/ continue; } /*If entry is NOT primitive we save it in JSON notation as a String*/ properties.put(entry.getKey(), entry.getValue().toString()); } return properties; }