每种格式转换都有不同的规则和边界情况。最重要的 5 点:
@key;重复的同级标签变成 JSON 数组。address.city)。colspan 则不行。数据往往同时以多种格式存在。你的数据库导出 CSV,旧 API 返回 XML,前端期望 JSON,而文档平台需要 Markdown。要在这些格式之间无误地搬运数据,就需要理解每种格式的规则以及它们的差异所在。
CSV(逗号分隔值)看似简单,但现实中的 CSV 文件充满会让粗糙解析器翻车的复杂情况。
表头检测:大多数 CSV 文件都有表头行。我们的 CSV 转 JSON 工具会把首行作为生成的 JSON 对象的键。如果你的文件没有表头,请在转换前先加上。
类型推断:CSV 没有类型系统——每个值都是字符串。好的转换器会推断类型:42 变成 JSON 数字,true 变成布尔值。我们的工具会进行智能类型推断,同时允许你在需要时手动覆盖。
引用与分隔符:含逗号的字段必须加引号。含引号的字段必须通过双写来转义。RFC 4180 定义了这些规则。此外还有制表符分隔(TSV)、分号分隔和竖线分隔等变体——我们的工具会自动检测分隔符。
XML 和 JSON 以不同方式表达相同的概念。理解映射规则可避免转换过程中的数据丢失。
属性 vs 子元素:XML 属性在 JSON 中没有直接对应。标准做法是把它们映射为以 @ 为前缀的键:{"@id": "42"}。我们的 XML 转 JSON 工具遵循这一约定。
数组检测:多个同名的同级元素隐含表示一个数组。我们的工具会自动识别这一点。
命名空间:XML 命名空间在 SOAP API 和企业级 XML 中很常见。前缀会成为 JSON 中键名的一部分。
带属性的文本内容:同时包含文本内容和属性的 XML 元素,其文本内容会映射到一个特殊的 #text 键。
把 JSON 转成 CSV,需要把可能是多维的数据变成一张二维表格。
简单数组:由扁平对象组成的 JSON 数组可直接转成 CSV。每个对象成为一行,每个唯一的键成为一列。
嵌套对象:{"address": {"city": "London"}} 必须被扁平化。标准做法是使用点号表示法:address.city 成为列标题。我们的 JSON 转 CSV 工具通过「扁平化嵌套」选项处理这一点。
对象内的数组:{"tags": ["js", "python"]} 没有干净的 CSV 表示方式。可选做法包括用分隔符把值连接起来,或为该数组单独使用一份 CSV。
在平台之间迁移内容时,把 HTML 转成 Markdown 很常见——从 CMS 迁到静态站点生成器,或把网页抓取结果导入文档工具。
能干净转换的:标题、段落、加粗/斜体、行内代码、代码块、引用块、列表、链接和图片都有直接的 Markdown 对应。
会损失保真度的:自定义 CSS 类、复杂的表格布局、超过两层的嵌套列表,以及任何 Markdown 没有对应语法的语义化 HTML。
表格:标准 HTML 表格会转换为 GitHub Flavored Markdown(GFM)表格语法。含合并单元格的复杂表格无法用 Markdown 表示。我们的 HTML 转 Markdown 工具可处理标准表格并规范化空白输出。
使用我们的 CSV 转 JSON 工具——它在你的浏览器中于客户端处理文件,没有服务器上传大小限制。对于大于约 50 MB 的文件,jq 或 Python 的 csv 模块等命令行工具会更高效。
最常见的原因是 XML 属性被丢弃。请确保转换器保留属性。也要留意 XML 命名空间——像 ns:item 这样的元素会变成 JSON 中字面的键名。
用单个工具无法直接转换。请先用我们的 CSV 转 JSON 工具把 CSV 转成 JSON,再用我们的 JSON 转 XML 工具把 JSON 转成 XML。两步,同一个浏览器,不上传任何数据。
Markdown 是有意做得受限的——它覆盖了 80% 的常见格式需求。CSS 样式、自定义类和复杂布局都没有 Markdown 对应写法。
JSON 是 REST API 的标准。它拥有最好的解析器支持、对典型结构化数据最小的负载体积,以及 JavaScript 的原生支持。仅在 SOAP API 或旧企业系统集成时才使用 XML。