private void genPropToJson(String before, String after, PropertyInfo prop, PrintWriter writer) {
String indent = " ";
if (prop.isList() || prop.isSet()) {
writer.print(indent + "if (obj." + prop.getGetterMethod() + "() != null) {\n");
writer.print(indent + " JsonArray array = new JsonArray();\n");
writer.print(indent + " obj." + prop.getGetterMethod() + "().forEach(item -> array.add(" + before + "item" + after + "));\n");
writer.print(indent + " json.put(\"" + prop.getName() + "\", array);\n");
writer.print(indent + "}\n");
} else if (prop.isMap()) {
writer.print(indent + "if (obj." + prop.getGetterMethod() + "() != null) {\n");
writer.print(indent + " JsonObject map = new JsonObject();\n");
writer.print(indent + " obj." + prop.getGetterMethod() + "().forEach((key, value) -> map.put(key, " + before + "value" + after + "));\n");
writer.print(indent + " json.put(\"" + prop.getName() + "\", map);\n");
writer.print(indent + "}\n");
} else {
String sp = "";
if (prop.getType().getKind() != ClassKind.PRIMITIVE) {
sp = " ";
writer.print(indent + "if (obj." + prop.getGetterMethod() + "() != null) {\n");
}
writer.print(indent + sp + "json.put(\"" + prop.getName() + "\", " + before + "obj." + prop.getGetterMethod() + "()" + after + ");\n");
if (prop.getType().getKind() != ClassKind.PRIMITIVE) {
writer.print(indent + "}\n");
}
}
}