code: public JSONObject toJson() {
          JSONObject json = new JSONObject();
  
          Field[] fields = clazz.getDeclaredFields();
  
          try {
              for (Field field : fields) {
  
                  if (!field.isAnnotationPresent(ModelField.class)) {
                      continue;
                  }
  
                  String name = field.getName();
                  boolean was = field.isAccessible();
  
                  field.setAccessible(true);
  
                  switch (toFieldEnum(field)) {
                      case INT:
                          json.put(name, field.getInt(this));
                          break;
                      case LONG:
                          json.put(name, field.getLong(this));
                          break;
                      case FLOAT:
                          json.put(name, field.getFloat(this));
                          break;
                      case DOUBLE:
                          json.put(name, field.getDouble(this));
                          break;
                      case STRING:
                          json.put(name, field.get(this));
                          break;
                      case BOOLEAN:
                          json.put(name, field.getBoolean(this));
                          break;
                      case LIST:
                          JSONArray list = new JSONArray();
                          List<String> stringList = (List<String>) field.get(this);
  
                          if (stringList != null) {
                              for (String value : stringList) {
                                  list.put(value);
                              }
                          }
  
                          json.put(name, list);
                          break;
                  }
  
                  field.setAccessible(was);
              }
          } catch (IllegalAccessException | JSONException e) {
              e.printStackTrace();
          }
  
          return json;
      }
docs: Analyzes the entire object and creates a brand-new json...
  representation.
  
  @return The JSONObject representation of the object.