boolean isOverridden = (Boolean)(en.getMethod("isOverridden")).invoke(v);
gen.writeStartObject(); // {
gen.writeStringField(key,valueAsString); // "key": "value"
gen.writeStringField("description", valueDescription); // ,"description":"description"
gen.writeStringField("type",type.getSimpleName()); // ,"type":"type"
gen.writeBooleanField("editable",isEditable); // ,"editable":"true|false"
gen.writeBooleanField("visible",isVisible); // ,"visible":"true|false"
gen.writeBooleanField("overridden",isOverridden); // ,"overridden":"true|false"
gen.writeEndObject(); // }
}
if (gen.getOutputContext().inArray()) gen.writeEndArray(); // ]