• API文档转实体类脚本


    工作遇到接口文档实体类内容很多,就写了一个简单的脚本,在此记录一下

    1. //根据 接口文档栏位项目名称 中文名称 补充说明 生成XMLmodel类
    2. //每行以$$$开头 第一列为$$$
    3. public static void generateCommonApiModel(String str) {
    4. int indexOfPP = 0;
    5. //每行开头
    6. String linePrefix = "$$$";
    7. //字段名过滤的字符
    8. String varNameSkipStr = "[..]";
    9. //截取的列
    10. int [] contentIndexes = new int[]{1,2,3};
    11. String rstContent = "";
    12. while (str.indexOf(linePrefix, indexOfPP) > -1) {
    13. //截取下一个..和当前..中间的内容,以及最后一个..以后的内容
    14. int currPP = str.indexOf(linePrefix, indexOfPP);
    15. String line;
    16. if (currPP + linePrefix.length() < str.length()) {
    17. int nextPP = str.indexOf(linePrefix, currPP + linePrefix.length());
    18. if (nextPP > 0) {
    19. line = str.substring(currPP + linePrefix.length(), nextPP);
    20. indexOfPP = nextPP;
    21. } else {
    22. //最后一个
    23. line = str.substring(currPP + linePrefix.length());
    24. indexOfPP = str.length()-1;
    25. }
    26. } else {
    27. //最后一个
    28. line = str.substring(currPP + linePrefix.length());
    29. indexOfPP = str.length()-1;
    30. }
    31. String[] cells = line.split("[\t]");
    32. //@XmlElement(name = "Cur_SbmTm")
    33. // private String curSbmTm;
    34. String content ="/**\n";
    35. content += " * "+cells[contentIndexes[1]];
    36. if (cells.length > contentIndexes[2]) {
    37. for (int i = contentIndexes[2]; i < cells.length; i ++) {
    38. content += " "+cells[i].replaceAll("\n", "");
    39. }
    40. }
    41. content+= "\n */\n";
    42. String varName = cells[contentIndexes[0]].replaceAll(varNameSkipStr, "");
    43. content += "@XmlElement(name = \""+varName+"\")\n";
    44. content +="@XmlJavaTypeAdapter(CDataAdapter.class)\n";
    45. content += "private String "+ StringUtils.toCamelCase(varName) +";";
    46. content +="\n";
    47. rstContent += content;
    48. System.out.print("");
    49. }
    50. System.out.println(rstContent);
    51. }
    52. public static void main(String[] args) {
    53. String str = "$$$\tname\t姓名\t客户姓名\n" +
    54. "$$$\tage\t年龄\t客户年龄\n" +
    55. "$$$\tweight\t体重\t客户体重\n" +
    56. "$$$\theight\t身高\t客户身高\n"
    57. ;
    58. generateCommonApiModel(str);
    59. }

    输出:

    /**
     * 姓名  客户姓名
     */
    @XmlElement(name = "name")
    @XmlJavaTypeAdapter(CDataAdapter.class)
    private String name;
    /**
     * 年龄  客户年龄
     */
    @XmlElement(name = "age")
    @XmlJavaTypeAdapter(CDataAdapter.class)
    private String age;
    /**
     * 体重  客户体重
     */
    @XmlElement(name = "weight")
    @XmlJavaTypeAdapter(CDataAdapter.class)
    private String weight;
    /**
     * 身高  客户身高
     */
    @XmlElement(name = "height")
    @XmlJavaTypeAdapter(CDataAdapter.class)
    private String height;

  • 相关阅读:
    自建云服务计费系统
    OSPF高级特性 —— 被动接口 + 按需链路 + donotage标记
    LetCode刷题[简单题](1)刷手续费
    第三十三章 管理许可(六)
    [附源码]Python计算机毕业设计Django学习帮扶网站设计与实现
    qt 消息(事件)机制
    超千万下载量的NPM包遭黑客攻击,美国监管机构紧急警告
    建议收藏!深入理解Java虚拟机:JVM垃圾回收算法+垃圾收集器
    对权限的理解和使用
    「USACO 做题笔记」USACO 2011 Nov Bronze
  • 原文地址:https://blog.csdn.net/e274794140/article/details/134555392