还在用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_JsonToTable | |||
json_TableToJson_pro | |||
json_ObjectToKV | |||
json_ArrayToTable | |||
json_Search | |||
json_XmlToJson |
这7个函数形成了一个完整的数据处理闭环:导入(JsonToTable系列)→ 拆解(ObjectToKV/ArrayToTable)→ 检索(Search)→ 导出(TableToJson),加上跨格式的XmlToJson作为补充。
数据导出篇:表格转JSON
json_TableToJson —— 把Excel区域变成JSON数组
这个函数解决的是一个高频需求:把Excel里的结构化数据转成JSON,用于API请求体、配置文件或数据交换。
函数签名:
=json_TableToJson(tableData, [filepath])tableData | |||
filepath |
用法一:返回JSON字符串
假设A1:C3区域有如下数据:
公式:
=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 | |||
includeHeaders |
基础用法:
A1单元格中存放以下JSON:
[{"员工编号":"E1001","姓名":"张三","部门":"技术部"},{"员工编号":"E1002","姓名":"李四","部门":"市场部"}]公式:
=json_JsonToTable(A1)输出效果:
类型转换规则:
需要注意的限制: 此函数仅支持扁平结构的对象数组,不支持嵌套对象(如{"a":{"b":1}})和数组类型的值(如{"tags":["A","B"]})。如果JSON结构复杂,需要用到下面的Pro版本。
json_TableToJson_pro —— 复杂嵌套JSON的递归解析
这个名字容易产生误解——它实际上是JSON转表格的增强版,专门处理json_JsonToTable搞不定的多层嵌套结构。
函数签名:
=json_TableToJson_pro(jsonInput)jsonInput |
处理多层嵌套对象:
=json_TableToJson_pro("{'company':'TechCorp','departments':[{'name':'研发部','employees':[{'id':1001}]}]}")输出效果:
company TechCorpdepartmentsname 研发部employeesid 1001
处理混合类型数组:
=json_TableToJson_pro("{'items':[{'product':'笔记本'},'配件',null]}")输出效果:
itemsproduct 笔记本配件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 |
基础用法:
=json_ObjectToKV("{""部门"":""市场部"",""人数"":12,""负责人"":""王强""}")输出效果:
配合VLOOKUP实现属性查找:
=VLOOKUP("负责人", json_ObjectToKV(A1), 2, FALSE)这个组合的妙处在于:不需要知道JSON里有哪些字段,先用json_ObjectToKV展开成两列表格,再用VLOOKUP按需取值。对于字段不固定的API响应特别实用。
json_ArrayToTable —— JSON数组的一维展开
这个函数处理的是纯粹的JSON数组(不是对象数组),把它横向或纵向展开到Excel单元格中。
函数签名:
=json_ArrayToTable(jsonArray, [horizontal])jsonArray | |||
horizontal |
横向展开:
=json_ArrayToTable("[1,2,3]", TRUE)输出:1 | 2 | 3(同一行三个单元格)
纵向展开:
=json_ArrayToTable("[1,2,3]", FALSE)输出:
123
字符串数组:
=json_ArrayToTable("[\"苹果\",\"香蕉\",\"梨\"]", TRUE)输出:苹果 | 香蕉 | 梨
纵向展开后配合数据透视表,可以快速统计数组元素的频次分布。对于从API返回的标签列表、ID列表等一维数据的处理,这个函数比手动分列高效得多。
数据检索篇:JSON搜索
json_Search —— 在JSON里搜索并返回路径
这是整个JSON函数集中设计得最有"查询语言"味道的一个。它递归遍历JSON的所有节点,找到匹配的值,并返回值和它在JSON中的完整路径。
函数签名:
=json_Search(json, searchValue, [fuzzyMatch])json | |||
searchValue | |||
fuzzyMatch |
模糊搜索:
=json_Search("{""user"":{""name"":""张三"",""city"":""北京""}}", "张", TRUE)输出:
精确匹配:
=json_Search("{""user"":{""name"":""张三"",""city"":""北京""}}", "北京", FALSE)输出:
取第一个匹配项的路径:
=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 |
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个函数怎么选
根据数据形态和处理需求,选择合适的函数:
json_TableToJson | ||
json_JsonToTable | ||
json_TableToJson_pro | ||
json_ObjectToKV | ||
json_ArrayToTable | ||
json_Search | ||
json_XmlToJson |
一个简单的判断逻辑:先看数据方向(表格→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数据处理)
本文基于灵析表格官方文档撰写,函数参数和示例均来自官网最新版本文档。
夜雨聆风