boolean isOverridden = (Boolean)(en.getMethod("isOverridden")).invoke(v);
String valueDescription=(String) (en.getMethod("getValueDescription")).invoke(v);
Class type = (Class) en.getMethod("getType").invoke(v);
gen.writeStartObject(); // {
gen.writeStringField("key", key);
gen.writeStringField("value",valueAsString);
gen.writeStringField("description", valueDescription); // ,"description":"description"
gen.writeStringField("type",type.getSimpleName()); // ,"type":"type"
gen.writeBooleanField("editable", isEditable);
gen.writeBooleanField("overridden", isOverridden);