Python实现将Json转换为Xml与Markdown

 更新时间:2025年07月29日 09:21:22   作者:Kyln.Wu  
这篇文章主要为大家详细介绍了如何利用Python实现将Json转换为Xml与Markdown格式,文中的示例代码讲解详细,有需要的小伙伴可以了解一下

Python Json转Xml

前景提要

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 盘。

代码解析 1

通俗解释

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

关键代码

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

代码解析 2

通俗解释

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)

代码解析 3

通俗解释

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

关键代码

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

代码解析 4

通俗解释

就像把整理好的笔记放进文件夹,这一步把字符串一次性写进文件,顺手加上 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;加上两条简单扩展,还能批量、还能点点鼠标。下次再有人甩来配置,你就笑眯眯地双击脚本——下班前就能回家追剧。

Python Json转Markdown

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

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

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

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

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

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

代码解析 1

通俗解释

就像把一封英文信先翻译成中文再读,这一步让 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")

代码解析 2

通俗解释

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)

代码解析 3

通俗解释

拆到最后,给每个“糖果”写上名字和味道: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

代码解析 4

通俗解释

就像把整理好的笔记放进文件夹,这一步把生成的 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格式转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • django之自定义软删除Model的方法

    django之自定义软删除Model的方法

    这篇文章主要介绍了django之自定义软删除Model的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Django自带用户认证系统使用方法解析

    Django自带用户认证系统使用方法解析

    这篇文章主要介绍了Django自带用户认证系统使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • python修改linux中文件(文件夹)的权限属性操作

    python修改linux中文件(文件夹)的权限属性操作

    这篇文章主要介绍了python修改linux中文件(文件夹)的权限属性操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python实现udp聊天窗口

    python实现udp聊天窗口

    这篇文章主要为大家详细介绍了python实现udp聊天窗口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Python 修改CSV文件实例详解

    Python 修改CSV文件实例详解

    这篇文章主要为大家介绍了Python 修改CSV文件实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Django 序列化的具体使用

    Django 序列化的具体使用

    django rest framework 中的序列化组件,本文主要介绍了Django 序列化的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Python PIL库读取设置图像的像素内容方法示例

    Python PIL库读取设置图像的像素内容方法示例

    这篇文章主要为大家介绍了使用Python PIL库Image模块中的getpixel和putpixel方法读取设置图像的像素内容实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 基于pykeyboard的用法说明

    基于pykeyboard的用法说明

    这篇文章主要介绍了基于pykeyboard的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 基python实现多线程网页爬虫

    基python实现多线程网页爬虫

    python是支持多线程的, 主要是通过thread和threading这两个模块来实现的,本文主要给大家分享python实现多线程网页爬虫,需要的朋友可以参考下
    2015-09-09
  • Python使用kombu连接信息中包含#号问题排查方式

    Python使用kombu连接信息中包含#号问题排查方式

    文章描述了在部署Python项目到生产环境时遇到的一个错误,即端口号无法正确转换为整数值,该错误在测试环境和本地调试中没有出现,但在生产环境中才出现,通过分析错误信息和代码,作者发现问题出在URL解析过程中,特别是在处理包含特殊字符(如#号)的URL时
    2024-12-12

最新评论