Excel处理JSON不再难!灵析表格7大JSON函数深度解析,一个公式搞定API数据
还在用VBA写JSON解析?还在复制粘贴到在线工具转换?灵析表格(Excel公式盒子)内置7个JSON专业函数,让你在单元格里直接完成JSON与表格的双向转换、数据搜索、格式互转,打通Excel与API数据交互的最后一公里。
背景:Excel用户的JSON困境
做过数据对接的人都遇到过这个场景:调一个API接口,返回一大串JSON数据,需要拆解后填进Excel表格。传统方案要么写VBA脚本(门槛高、维护难),要么借助Power Query(操作繁琐、不够灵活),要么复制到在线JSON格式化工具手动拆(效率低、易出错)。
反过来也一样:老板要你把Excel里的数据转成JSON发给开发同事,你发现Excel内置函数里压根没有这个能力。
灵析表格(官网 http://calcx.cn )的JSON数据处理模块,提供了7个专业函数,覆盖了JSON与Excel表格之间几乎所有常见的转换需求。这篇文章从功能定位、实战场景、选型对比三个维度,逐一拆解这7个函数。
JSON函数全景:7把利器各司其职
先用一张表建立全局认知:
| 函数名 | 中文名 | 核心能力 | 数据方向 |
|---|---|---|---|
json_TableToJson | 表格转Json | Excel表格区域 → JSON数组字符串 | 表格 → JSON |
json_JsonToTable | Json转表格 | JSON对象数组 → Excel表格 | JSON → 表格 |
json_TableToJson_pro | Json转表格 Pro | 复杂嵌套JSON → Excel表格(递归解析) | JSON → 表格 |
json_ObjectToKV | 对象转键值对 | JSON对象 → 键值对二维表 | JSON → 表格 |
json_ArrayToTable | 数组转表格 | JSON数组 → 横向/纵向展开 | JSON → 表格 |
json_Search | 搜索 | 在JSON中搜索值并返回路径 | JSON内检索 |
json_XmlToJson | XML转JSON | XML字符串/文件 → JSON | XML → JSON |
这7个函数形成了一个完整的数据处理闭环:导入(JsonToTable系列)→ 拆解(ObjectToKV/ArrayToTable)→ 检索(Search)→ 导出(TableToJson),加上跨格式的XmlToJson作为补充。
数据导出篇:表格转JSON
json_TableToJson —— 把Excel区域变成JSON数组
这个函数解决的是一个高频需求:把Excel里的结构化数据转成JSON,用于API请求体、配置文件或数据交换。
函数签名:
=json_TableToJson(tableData, [filepath])| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
tableData | Object[,] | 是 | 包含标题行的二维表格数据区域 |
filepath | String | 否 | 为空时返回JSON字符串,非空时写入文件 |
用法一:返回JSON字符串
假设A1:C3区域有如下数据:
| 姓名 | 年龄 | 城市 |
|---|---|---|
| 张三 | 30 | 北京 |
| 李四 | 25 | 上海 |
公式:
=json_TableToJson(A1:C3, "")输出:
[{"姓名":"张三","年龄":30,"城市":"北京"},{"姓名":"李四","年龄":25,"城市":"上海"}]用法二:直接写入文件
=json_TableToJson(A1:C3, "D:\data\output.json")返回"写入完成",文件直接落盘。
这个函数有几个设计细节值得注意:第一行自动作为JSON键名,数字格式自动识别(不会变成文本),空值转为null而不是空字符串。结合Excel的批量公式或宏,可以一次性导出多个JSON文件,实现数据导出自动化。
数据导入篇:JSON转表格
json_JsonToTable —— 标准JSON数组的表格化
这是json_TableToJson的反向操作,把JSON数组对象转成Excel表格。
函数签名:
=json_JsonToTable(jsonInput, [includeHeaders])| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
jsonInput | String | 是 | 文件路径或原始JSON文本 |
includeHeaders | Boolean | 否 | 是否包含字段标题行,默认TRUE |
基础用法:
A1单元格中存放以下JSON:
[{"员工编号":"E1001","姓名":"张三","部门":"技术部"},{"员工编号":"E1002","姓名":"李四","部门":"市场部"}]公式:
=json_JsonToTable(A1)输出效果:
| 员工编号 | 姓名 | 部门 |
|---|---|---|
| E1001 | 张三 | 技术部 |
| E1002 | 李四 | 市场部 |
类型转换规则:
| JSON类型 | Excel结果 |
|---|---|
| string | 文本 |
| number | 数值 |
| boolean | TRUE/FALSE |
| object | 转为字符串 |
| null | 空单元格 |
需要注意的限制:此函数仅支持扁平结构的对象数组,不支持嵌套对象(如{"a":{"b":1}})和数组类型的值(如{"tags":["A","B"]})。如果JSON结构复杂,需要用到下面的Pro版本。
json_TableToJson_pro —— 复杂嵌套JSON的递归解析
这个名字容易产生误解——它实际上是JSON转表格的增强版,专门处理json_JsonToTable搞不定的多层嵌套结构。
函数签名:
=json_TableToJson_pro(jsonInput)| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
jsonInput | String | 是 | JSON字符串或文件路径 |
处理多层嵌套对象:
=json_TableToJson_pro("{'company':'TechCorp','departments':[{'name':'研发部','employees':[{'id':1001}]}]}")输出效果:
company TechCorp departments name 研发部 employees id 1001处理混合类型数组:
=json_TableToJson_pro("{'items':[{'product':'笔记本'},'配件',null]}")输出效果:
items product 笔记本 配件 null它的转换规则很清晰:对象属性横向展开为键值对,数组元素纵向排列并缩进显示,空值自动转为空单元格。这个函数最大的价值在于递归解析——无论JSON嵌套多深,都能展开成可读的表格结构。
与http_Get配合实现API数据实时解析:
=json_TableToJson_pro(http_Get("https://api.example.com/data"))一个公式完成"请求API → 解析JSON → 展开到表格"的全流程。
数据拆解篇:对象与数组处理
json_ObjectToKV —— 把JSON对象拆成键值对
当API返回的是一个JSON对象(而不是数组),你需要把每个字段单独提取出来时,这个函数就派上用场了。
函数签名:
=json_ObjectToKV(jsonObject)| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
jsonObject | String | 是 | 合法的JSON对象字符串 |
基础用法:
=json_ObjectToKV("{""部门"":""市场部"",""人数"":12,""负责人"":""王强""}")输出效果:
| 键 | 值 |
|---|---|
| 部门 | 市场部 |
| 人数 | 12 |
| 负责人 | 王强 |
配合VLOOKUP实现属性查找:
=VLOOKUP("负责人", json_ObjectToKV(A1), 2, FALSE)这个组合的妙处在于:不需要知道JSON里有哪些字段,先用json_ObjectToKV展开成两列表格,再用VLOOKUP按需取值。对于字段不固定的API响应特别实用。
json_ArrayToTable —— JSON数组的一维展开
这个函数处理的是纯粹的JSON数组(不是对象数组),把它横向或纵向展开到Excel单元格中。
函数签名:
=json_ArrayToTable(jsonArray, [horizontal])| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
jsonArray | String | 是 | 有效的JSON数组字符串 |
horizontal | Boolean | 否 | 输出方向,TRUE横向(默认),FALSE纵向 |
横向展开:
=json_ArrayToTable("[1,2,3]", TRUE)输出:1 | 2 | 3(同一行三个单元格)
纵向展开:
=json_ArrayToTable("[1,2,3]", FALSE)输出:
1 2 3字符串数组:
=json_ArrayToTable("[\"苹果\",\"香蕉\",\"梨\"]", TRUE)输出:苹果 | 香蕉 | 梨
纵向展开后配合数据透视表,可以快速统计数组元素的频次分布。对于从API返回的标签列表、ID列表等一维数据的处理,这个函数比手动分列高效得多。
数据检索篇:JSON搜索
json_Search —— 在JSON里搜索并返回路径
这是整个JSON函数集中设计得最有"查询语言"味道的一个。它递归遍历JSON的所有节点,找到匹配的值,并返回值和它在JSON中的完整路径。
函数签名:
=json_Search(json, searchValue, [fuzzyMatch])| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
json | String | 是 | 合法JSON字符串 |
searchValue | String | 是 | 要查找的内容 |
fuzzyMatch | Boolean | 否 | 是否模糊匹配,默认TRUE |
模糊搜索:
=json_Search("{""user"":{""name"":""张三"",""city"":""北京""}}", "张", TRUE)输出:
| 值 | 路径 |
|---|---|
| 张三 | user.name |
精确匹配:
=json_Search("{""user"":{""name"":""张三"",""city"":""北京""}}", "北京", FALSE)输出:
| 值 | 路径 |
|---|---|
| 北京 | user.city |
取第一个匹配项的路径:
=INDEX(json_Search(A1, "关键字", TRUE), 1, 2)模糊匹配使用的是Contains逻辑(包含即匹配),精确匹配使用Equals逻辑(完全相等)。返回的路径用点号分隔(如user.name),可以直接用于后续的数据定位和提取。在处理大型JSON响应时,这个函数能帮你快速锁定目标数据在结构中的位置,省去人工翻找的时间。
跨格式篇:XML转JSON
json_XmlToJson —— XML数据的JSON化桥梁
很多老旧系统和配置文件仍在使用XML格式。这个函数把XML字符串或文件转换为JSON,为后续的JSON处理铺路。
函数签名:
=json_XmlToJson(xmlOrPath)| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
xmlOrPath | String | 是 | XML字符串或文件路径 |
XML字符串转JSON:
=json_XmlToJson("<root><name>张三</name><age>25</age></root>")输出:
{"root":{"name":"张三","age":"25"}}XML文件转JSON:
=json_XmlToJson("D:\data\config.xml")输出:
{"config":{"setting":"value","enabled":"true"}}转换规则:
- XML属性以
@前缀表示(如<node id="1">转为{"node":{"@id":"1"}}) - 多个同名子节点自动转为JSON数组
- 空节点转为空字符串
- 底层使用Newtonsoft.Json序列化,兼容性好
典型的工作流是:先用json_XmlToJson把XML转成JSON,再用json_TableToJson_pro或json_JsonToTable展开成表格。两步完成XML到Excel的数据迁移。
实战演练:函数组合应用场景
场景一:API数据导入分析全流程
调用一个天气API,返回的JSON包含多层嵌套的城市信息和预报数据。完整流程只需两个公式:
=json_TableToJson_pro(http_Get("https://api.weather.com/v1/forecast"))一步到位:请求API → 解析嵌套JSON → 展开到表格。如果只需要提取某个城市的数据:
=VLOOKUP("北京", json_TableToJson_pro(http_Get(A1)), 2, FALSE)场景二:Excel数据批量导出为API请求体
需要把员工表批量转成JSON发送给接口。先整理好表格区域(第一行为字段名),然后:
=json_TableToJson(A1:D100, "D:\export\employees.json")一条公式生成完整的JSON文件,直接作为API请求体使用。
场景三:配置文件格式迁移
有个XML配置文件需要导入Excel分析,但Excel不原生支持XML解析。两步搞定:
=json_XmlToJson("D:\config\settings.xml")把XML转成JSON字符串后:
=json_ObjectToKV(A1)展开为键值对表格,直接在Excel中查看和修改。
场景四:大型JSON响应中定位数据
API返回了几百个字段的大型JSON,手动查找某个值的位置非常低效:
=json_Search(A1, "订单号", TRUE)立刻得到值和路径,再用路径信息做后续提取。
选型指南:7个函数怎么选
根据数据形态和处理需求,选择合适的函数:
| 你的需求 | 推荐函数 | 理由 |
|---|---|---|
| Excel表格转JSON | json_TableToJson | 原生支持,可写文件 |
| 扁平JSON转表格 | json_JsonToTable | 轻量快速,支持标题行控制 |
| 嵌套JSON转表格 | json_TableToJson_pro | 递归解析,无层数限制 |
| JSON对象拆键值对 | json_ObjectToKV | 两列表格,配合VLOOKUP |
| JSON数组展开 | json_ArrayToTable | 横纵可控,适合一维数据 |
| JSON内搜索 | json_Search | 模糊/精确双模式,返回路径 |
| XML转JSON | json_XmlToJson | 桥接XML与JSON生态 |
一个简单的判断逻辑:先看数据方向(表格→JSON还是JSON→表格),再看数据结构(扁平还是嵌套),最后看是否需要检索或跨格式转换。
快速上手:安装与使用
灵析表格兼容Windows 7/8/10/11,同时支持WPS和Office的32位和64位版本。安装步骤:
- 从官网 http://calcx.cn 下载Excel公式盒子管理器
- 退出所有WPS和Office程序
- 运行管理器,选择语言版本(中文/英文)和系统位数
- 点击"一键安装"按钮,等待自动配置完成
安装验证:在单元格中输入=get_机器码(),返回机器码即表示安装成功。
JSON系列函数属于专业版(Pro)功能。安装后默认为免费版,可使用大部分函数,专业版函数需要激活对应会员等级。
所有JSON函数支持中英文双版本函数名,例如json_TableToJson和json_表格转Json等价,可根据团队习惯选择。
写在最后
Excel缺少JSON处理能力,本质上是办公软件与开发者生态之间的断层。灵析表格的7个JSON函数,用最Excel化的方式(单元格公式)填补了这个断层。不需要写VBA,不需要装插件,不需要切换工具——一个公式就能完成JSON的生成、解析、搜索和格式转换。
对于经常与API打交道的运营、产品、数据分析师来说,这套函数库的价值在于:把JSON数据处理从"工程师的活"变成了"表格用户的活"。
官网地址:http://calcx.cn
函数文档:http://calcx.cn (导航 → 函数文档 → JSON数据处理)
本文基于灵析表格官方文档撰写,函数参数和示例均来自官网最新版本文档。
