zoukankan      html  css  js  c++  java
  • 写了个脚本将json换成md

    用python 脚本将protocol.json中的json按照templete.md模版生成,结果在protocol.md中

    Python:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import json
    import sys
    import os
    
    reload(sys)
    sys.setdefaultencoding("utf-8")
    
    CONFIG_FILE = 'protocol.json'
    MD_FILE = 'protocol.md'
    TEMPLATE_FILE = 'templete.md'
    
    TEMPLATE_STR_ON = ' on:integer, 1、{classNameCN}开;0、{classNameCN}关。可缺省。'
    
    def writeDoc(item):
        for k in item.keys():
            classname_cn = ''   #去除name
            if 'name' in json.dumps(item[k]):
                classname_cn = item[k]['name']
                del  item[k]['name']
            values = json.dumps(item[k]);
    
    
            with open(TEMPLATE_FILE,'rw+') as template_file:
                templateContent = template_file.readlines()
                resultFile = open(MD_FILE,'a+');
                print(templateContent);
                for i in templateContent:
                    if '{classNameCN}' in i:
                        i = i.replace('{classNameCN}',classname_cn)
                    if '{className}' in i:
                         i = i.replace('{className}',k)
                    if '{classValue}' in i:
                         i = i.replace('{classValue}',values)
                    if '{property}' in i:
                         i = i.replace('{property}',writeSummary(item[k],classname_cn))   #写说明
                    resultFile.write(i)
                resultFile.close()
                template_file.close();
    
    def writeSummary(parm,classname_cn=''):
        result_str = ''
        for k in parm.keys():
            if(k == 'on'):
                templete_str = TEMPLATE_STR_ON.replace('{classNameCN}',classname_cn)
                result_str = result_str+templete_str
            else:
                temp_str = "
      *  " + k+":"+type(parm[k]).__name__
                result_str = result_str + temp_str
    
        return result_str
    
    
    if __name__ == '__main__':
        if os.path.exists(CONFIG_FILE):
            fileContent = open(CONFIG_FILE).read()
            # 清空文件
            with open(MD_FILE, 'wb+') as file:
                file.close();
            jsonDic = json.loads(fileContent)
            writeDoc(jsonDic)
        else:
            print ('json 配置文件不存在')
    protocol.json
    {
        "Remind": {
            "name":"提醒",
            "on":1,
            "pd":30
         }
    }
    templete.md
    ## {className}
    ## 获取{classNameCN}的相关信息
    ### [Name]
    get{className}
    ### [Request]
    ```json
    {
         "body":{}
    }
    ```
    ### [Response]
    ```json
    {
        "body":{
             "code":0,
             "msg":"ok",
             "data":{classValue}
        }
    }
    ```
    
    ## 设置{classNameCN}相关信息
    ### [Name]
    set{className}
    ### [Request]
    ```json
    {
        "body":{
            "data":{classValue}
        }
    }
    ```
    
    ### [Response]
    ```json
    {
        "body":{
            "code":0,
            "msg":"ok",
        }
    }
    ```
    ## report{classNameCN}信息变化
    ### [Name]
    on{className}
    ### [Report]
    ```json
    {
          "body":{
              "data":{classValue}
          }
    }
    ```
    ### [Parameters]
    * {className} 结构说明:
      * {property}
      * 具体的json schema 可参考:<br/>
        http://rcp-schema.ecouser.net/Data/Config/{className}.json
  • 相关阅读:
    浅谈双连通分量、强连通分量
    第四届 山东省ACM大学生程序设计竞赛
    第四届 山东省ACM Rescue The Princess(计算几何)
    light oj 1138
    hdoj 2767 Proving Equivalences【求scc&&缩点】【求最少添加多少条边使这个图成为一个scc】
    hdoj 3836 Equivalent Sets【scc&&缩点】【求最少加多少条边使图强连通】
    hdoj 3072 Intelligence System【求scc&&缩点】【求连通所有scc的最小花费】
    hdoj 1827 Summer Holiday【强连通分量&&缩点】
    hdoj 1269 迷宫城堡【scc基础题目】
    light oj 1019【最短路模板】
  • 原文地址:https://www.cnblogs.com/developer-qin/p/9604420.html
Copyright © 2011-2022 走看看