@Override public JSON toJson() throws Exception { JSONObject json = new JSONObject(); Iterator<Map.Entry<String, Object>> fieldIterator = this.doc.iterator(); while (fieldIterator.hasNext()) { Map.Entry<String, Object> field = fieldIterator.next(); addAsCorrectType(json, field.getKey(), field.getValue()); } return json; }