Python实现将Json转换为Xml与Markdown

Written by

in

文章目录
  • 周五 18:00,你正准备关机,老板甩来一个 200 行的 config.json:“下班前把这份配置整理成文档发我。” 你打开文件,瞬间眼花:嵌套的对象、数组、布尔值混成一团。手敲 Markdown?估计得加班到半夜。 这时,你把今天刚拿到的小脚本 script.py 往命令行一扔—— python script.py -i config.json -o config.md 3 秒后,config.md 静静躺在桌面:标题、缩进、代码块全排好,老板直夸“专业”。 这把“瑞士军刀”从此常驻你的工具箱。
  • 目录
    • Python Json转Xml
      • 前景提要
      • 代码解析 1
      • 代码解析 2
      • 代码解析 3
      • 代码解析 4
      • 扩展点子
    • Python Json转Markdown
      • 代码解析 1
      • 代码解析 2
      • 代码解析 3
      • 代码解析 4
      • 扩展点子

    17:55,你正准备关机,老板在群里@你:“把客户给的 test-input.json 转成 XML,今晚接口联调要用。”

    你打开文件,瞬间头大:嵌套的对象、数组、布尔值混成一锅粥。手敲 <tag>?估计得加班到凌晨。

    你把同事刚发你的 json_to_xml.py 往命令行一扔——

    python json_to_xml.py
    

    3 秒后,test-output.xml 静静躺在桌面,标签层级分明,连 <?xml version="1.0"?> 都写好了。
    这把“瑞士军刀”从此常驻你的 U 盘。

    通俗解释

    就像把一封英文信先翻译成中文再读,这一步让 Python 能把 JSON 内容当积木玩。

    关键代码

    with open("test-input.json", "r") as json_file:
        json_data = json.load(json_file)  # 把 JSON 字符串变成 Python 字典或列表
    

    通俗解释

    JSON 像俄罗斯套娃,大盒子里还有小盒子。脚本一层层拆开:遇到盒子(对象/数组)就继续拆,遇到糖果(字符串/数字)就贴标签。

    关键代码

    def json_to_xml(json_obj, line_padding=""):
        result_list = []
        if isinstance(json_obj, dict):
            for key, value in json_obj.items():
                result_list.append(f"{line_padding}<{key}>")
                result_list.append(json_to_xml(value, line_padding + "  "))
                result_list.append(f"{line_padding}</{key}>")
        elif isinstance(json_obj, list):
            for element in json_obj:
                result_list.append(json_to_xml(element, line_padding))
        else:
            result_list.append(f"{line_padding}{json_obj}")
        return "n".join(result_list)
    

    通俗解释

    拆到最底层时,脚本自动把键名变成标签名,把值放进标签中间,同时用两个空格缩进,让 XML 像楼梯一样好看。

    关键代码

    # 示例输出片段
    """
    <person>
      <name>Alice</name>
      <age>30</age>
    </person>
    """
    

    通俗解释

    就像把整理好的笔记放进文件夹,这一步把字符串一次性写进文件,顺手加上 XML 文件头。

    关键代码

    xml_data_with_header = "<?xml version="1.0" encoding="UTF-8"?>n" + xml_data
    with open("test-output.xml", "w") as file:
        file.write(xml_data_with_header)
    

    1. 批量处理整个文件夹

    给脚本加一个循环,让它一次吃下一整碗 JSON。

    import glob
    for json_path in glob.glob("*.json"):
        with open(json_path, "r") as f:
            data = json.load(f)
        xml_str = json_to_xml(data)
        save_xml_file(xml_str, json_path.replace(".json", ".xml"))
    

    2. 30 秒套个图形界面

    tkinter 做一个小窗口,拖文件就能转。

    import tkinter as tk
    from tkinter import filedialog
    
    root = tk.Tk()
    root.withdraw()  # 只弹出文件选择框
    input_path = filedialog.askopenfilename(title="选 JSON")
    with open(input_path, "r") as f:
        xml = json_to_xml(json.load(f))
    save_xml_file(xml, input_path.replace(".json", ".xml"))
    

    总结

    你刚体验了一把“零门槛”自动化:把任何 JSON 文件扔给脚本,3 秒就能收获排版漂亮的 XML。它不需要安装额外库,只用系统自带 Python;加上两条简单扩展,还能批量、还能点点鼠标。下次再有人甩来配置,你就笑眯眯地双击脚本——下班前就能回家追剧。

    周五 18:00,你正准备关机,老板甩来一个 200 行的 config.json:“下班前把这份配置整理成文档发我。”

    你打开文件,瞬间眼花:嵌套的对象、数组、布尔值混成一团。手敲 Markdown?估计得加班到半夜。

    这时,你把今天刚拿到的小脚本 script.py 往命令行一扔——

    python script.py -i config.json -o config.md
    

    3 秒后,config.md 静静躺在桌面:标题、缩进、代码块全排好,老板直夸“专业”。

    这把“瑞士军刀”从此常驻你的工具箱。

    通俗解释

    就像把一封英文信先翻译成中文再读,这一步让 Python 能“听懂” JSON 的内容。

    关键代码

    def load_json(file):
        try:
            with open(file, 'r') as f:
                data = f.read()
            return json.loads(data)  # 把 JSON 字符串变成 Python 字典或列表
        except:
            print("[ERROR] 文件必须是合法的 json")
    

    通俗解释

    JSON 像俄罗斯套娃,大盒子里还有小盒子。脚本一层层拆开,遇到盒子(对象/数组)就继续拆,遇到糖果(字符串/数字)就贴标签。

    关键代码

    def parse_json(json_block, depth, options):
        if isinstance(json_block, dict):
            parse_dict(json_block, depth, options)
        if isinstance(json_block, list):
            parse_list(json_block, depth, options)
    

    通俗解释

    拆到最后,给每个“糖果”写上名字和味道:age: 18。脚本自动在前面加 – 和反引号,让 Markdown 格式一步到位。

    关键代码

    def add_value(key, value, depth):
        chain = tab * (bool(depth - 1)) + list_tag + 
                str(key) + ": " + inline_code + str(value) + inline_code + "n"
        global markdown
        markdown += chain
    

    通俗解释

    就像把整理好的笔记放进文件夹,这一步把生成的 Markdown 字符串一次性写进指定文件,完事收工。

    关键代码

    def write_out(markdown, output_file):
        with open(output_file, 'w+') as f:
            f.write(markdown)
    

    1. 批量处理整个文件夹

    给脚本加一个 -b 参数,让它一次吃下一整碗 JSON。

    # 在 main() 里加几行
    import glob
    if args.batch:
        for json_path in glob.glob('*.json'):
            convert(json_path, json_path[:-4] + 'md', options)
    

    2. 30 秒套个图形界面

    用 tkinter 做一个小窗口,拖文件就能转。

    import tkinter as tk
    from tkinter import filedialog
    
    ​​​​​​​root = tk.Tk()
    root.withdraw()  # 只弹出文件选择框
    input_path = filedialog.askopenfilename(title="选 JSON")
    convert(input_path, input_path[:-4] + 'md', {'ignore': '', 'keep': ''})
    

    总结

    你刚体验了一把“零门槛”自动化:把任何 JSON 文件扔给脚本,3 秒就能收获排版漂亮的 Markdown。它不需要安装额外库,只用系统自带 Python;加上两条简单扩展,还能批量、还能点点鼠标。下次再有人甩来配置,你就笑眯眯地双击脚本——下班前就能回家追番。

    到此这篇关于Python实现将Json转换为Xml与Markdown的文章就介绍到这了,更多相关Python Json格式转换内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python中XML转JSON、XML转字典代码示例
    • python之json文件转xml文件案例讲解
    • python实现xml转json文件的示例代码
    • Python中xml和json格式相互转换操作示例
    • Python中JSON转换的全面指南与最佳实践
    • python实现将Excel文件转换为JSON文件

    站内搜索