PropertyDescriptor propertyDescriptor = new PropertyDescriptor(field.getName(), o.getClass());
field.setAccessible(true);
if (field.isAnnotationPresent(Ignore.class)) {
continue;
} else if (field.isAnnotationPresent(UseDataAdapter.class)) {
UseDataAdapter adapter = field.getAnnotation(UseDataAdapter.class);
jsonObject.put(field.getName(), adapter.value().newInstance().toJson(propertyDescriptor.getReadMethod().invoke(o)));
} else {
jsonObject.put(field.getName(), serialize(propertyDescriptor.getReadMethod().invoke(o)));
}
field.setAccessible(false);
}