灵析表格 · Excel公式盒子 --- Excel/WPS 官方扩展函数库 JSON 数据处理系列
一、研究背景与概述
JSON(JavaScript Object Notation)已成为现代数据交换的事实标准格式。在企业日常办公中,API 接口返回数据、系统导出配置、第三方平台数据对接等场景大量使用 JSON 格式。然而,Excel 和 WPS 表格作为职场最广泛使用的数据处理工具,其原生功能对 JSON 数据的支持极为有限------既没有内置的 JSON 解析函数,也缺乏将结构化 JSON 数据快速转换为表格的能力。cite:1cite:2
灵析表格(Excel公式盒子)是兼容 Excel 与 WPS 的官方扩展函数库,提供了完整的 JSON 数据处理函数族,其中 json_ObjectToKV(中文函数名:json_对象转键值对)是该函数族中的核心函数之一,专门用于将 JSON 对象的键值对展开为 Excel 可识别的二维表格结构。cite:1
本报告围绕 json_ObjectToKV 函数的技术原理、功能特性、方案对比、办公实战应用及最佳实践展开深度分析,面向财务、人事、运营、数据分析等职场人群,提供可直接落地的操作指南。
二、函数技术详解
2.1 函数定位与核心功能
json_ObjectToKV 函数的核心职责是:接收一个合法的 JSON 对象字符串,将其中的所有键值对解析并输出为两列结构的二维数组------第一列为键名(Key),第二列为对应的值(Value)。这种"竖向展开"的输出形式使原本嵌套在字符串中的结构化数据变为表格中可筛选、可统计、可查找的标准行式数据。cite:1
2.2 参数规范
| 参数名 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|
jsonObject |
String | 是 | {"name":"张三","age":30} |
合法的 JSON 对象字符串,键为字符串类型 |
函数仅接收一个参数,即待转换的 JSON 对象字符串。该字符串必须符合标准 JSON 对象语法规范(以 { 开头、} 结尾,键名使用双引号包裹,键值对之间以逗号分隔)。cite:1
2.3 基础用法演示
场景一:简单对象转换
excel
=json_ObjectToKV("{""name"":""李雷"",""age"":25}")
输出效果:
| name | 李雷 |
|---|---|
| age | 25 |
场景二:多属性对象展开
excel
=json_ObjectToKV("{""部门"":""市场部"",""人数"":12,""负责人"":""王强""}")
输出效果:
| 部门 | 市场部 |
|---|---|
| 人数 | 12 |
| 负责人 | 王强 |
以上案例展示了函数对中英文键名、字符串与数值类型的统一处理能力。cite:1
2.4 技术实现原理
根据官方技术说明,函数的内部处理流程如下:cite:1
- 解析阶段 :调用
JObject.Parse()方法将输入的 JSON 字符串解析为内存中的对象结构 - 遍历阶段:遍历解析后对象的每一项(键值对),逐一提取键名与值
- 写入阶段:将每对键值写入预分配的二维数组,第一列存储键名,第二列存储值
- 输出阶段:将填充完毕的二维数组作为公式返回值,以溢出(Spill)方式填充到单元格区域
支持的值类型:字符串(String)、数字(Number)、布尔值(Boolean)等基础数据类型。cite:1
2.5 异常处理机制
| 错误场景 | 返回值 |
|---|---|
| 输入非合法 JSON 对象 | "无效的JSON对象" |
函数内置了基本的容错机制,当传入的字符串无法被解析为合法 JSON 对象时,返回明确的错误提示文本而非报错中断,便于在公式链中进行后续判断处理。cite:1
2.6 运行环境兼容性
函数在 WPS 2019+ 和 Excel 365 中均通过测试,适用于扁平化 JSON 对象结构的处理。在支持动态数组(Dynamic Arrays)的版本中,函数输出可自动溢出到相邻单元格区域。cite:1
三、方案对比分析
3.1 与原生 Excel 函数方案对比
Excel 原生函数体系缺乏专门的 JSON 解析能力。在 Excel 2019 及以上版本中,理论上可通过 FILTERXML 函数配合多层 SUBSTITUTE 来近似实现 JSON 数据提取,但该方法存在显著缺陷:cite:2
excel
' 原生函数伪代码方案(仅作思路示意,实际极易出错)
=FILTERXML("<root>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, "{", "<"), "}", ">"), ":", "="), ",", "") & "</root>", "//user/name")
原生方案的核心问题:
- WPS 完全不支持
FILTERXML函数,跨平台兼容性为零 - 需要多层
SUBSTITUTE嵌套进行字符替换,公式冗长且难以维护 - 无法处理值中包含特殊字符(如逗号、冒号、引号)的情况
- 不支持将键值对展开为二维表格,仅能逐个字段提取
而 json_ObjectToKV 仅需一个公式即可完成完整的键值对展开:cite:2
excel
=json_ObjectToKV(A1)
3.2 与 VBA 方案对比
VBA 方案需要导入开源 JSON 解析库(如 VBA-JSON),再编写自定义函数实现同等功能:cite:2
vba
Function JsonToKeyValue(jsonText As String)
Dim json As Object, key As Variant, result(), i As Long
Set json = JsonConverter.ParseJson(jsonText)
ReDim result(1 To json.Count, 1 To 2)
i = 1
For Each key In json.Keys
result(i, 1) = key
result(i, 2) = json(key)
i = i + 1
Next key
JsonToKeyValue = result
End Function
VBA 方案的局限性:
- 需要额外下载并导入外部 JSON 解析库
- 需要启用宏,存在安全策略限制
- 代码编写门槛高,非技术人员难以维护
- WPS 中的 VBA 兼容性存在差异
3.3 三方案综合对比
| 对比维度 | json_ObjectToKV | 原生函数 | VBA 自定义函数 |
|---|---|---|---|
| 公式复杂度 | 极低(单函数调用) | 极高(多层嵌套) | 中等(需编写代码) |
| 跨平台兼容 | Excel + WPS | 仅 Excel 2019+ | 受宏安全策略限制 |
| 键值对展开 | 原生支持 | 不支持 | 支持(需编码) |
| 外部依赖 | 无 | 无 | 需导入 JSON 库 |
| 维护门槛 | 低 | 高 | 中高 |
| 特殊字符处理 | 自动处理 | 易出错 | 需额外编码 |
| 性能表现 | 底层优化 | 公式越长越慢 | 中等 |
综上,json_ObjectToKV 在易用性、兼容性和功能完整度三个维度上均显著优于替代方案,是非开发人员处理 JSON 数据的理想选择。cite:2
四、办公实战应用场景
4.1 场景一:API 接口数据快速解析
业务背景:运营人员从第三方平台导出的用户数据为 JSON 格式,需要快速整理为表格进行统计分析和汇报。
原始数据(A1 单元格):
json
{"user_id":1001,"username":"张三","department":"市场部","level":"高级","score":85,"is_active":true}
操作步骤:
excel
' B1单元格:直接展开所有键值对
=json_ObjectToKV(A1)
输出结果:
| user_id | 1001 |
|---|---|
| username | 张三 |
| department | 市场部 |
| level | 高级 |
| score | 85 |
| is_active | TRUE |
一键展开后,所有字段以整齐的表格形式呈现,可直接用于后续筛选、排序或制作数据透视表。cite:1cite:3
4.2 场景二:配合 VLOOKUP 实现字段值精准查找
业务背景:人事部门收到系统导出的 JSON 格式员工信息,需要根据字段名快速查找对应值,填入工资核算表。
数据来源(A1 单元格):
json
{"工号":"EMP2024","姓名":"王强","部门":"技术部","职级":"P7","base_salary":25000,"绩效系数":1.2}
查找公式:
excel
' 查找"姓名"字段对应的值
=VLOOKUP("姓名", json_ObjectToKV(A1), 2, FALSE)
' → 返回 "王强"
' 查找"职级"字段对应的值
=VLOOKUP("职级", json_ObjectToKV(A1), 2, FALSE)
' → 返回 "P7"
这种组合方式将 JSON 对象转化为临时查找表,无需先将数据手动粘贴到工作表中,实现了"即查即用"的动态数据提取。对于需要频繁从 JSON 数据中提取特定字段的场景(如工资核算、绩效统计),该方案可大幅减少重复操作。cite:1
4.3 场景三:系统配置参数批量提取与审计
业务背景:IT 运维人员需要从系统导出的 JSON 配置文件中提取所有参数项,生成配置清单用于安全审计和版本对比。
原始数据(A1 单元格):
json
{"max_connections":500,"timeout":30,"retry_count":3,"cache_enabled":true,"log_level":"INFO","port":8080}
操作步骤:
excel
' 展开所有配置项
=json_ObjectToKV(A1)
展开后得到标准的"参数名-参数值"两列表格,可直接:
- 使用条件格式标记异常值(如
timeout > 60标红) - 复制到单独工作表建立配置基线文档
- 与历史版本配置进行逐行差异对比
相比手动逐条复制配置参数,该方案可将配置审计效率提升数倍。cite:1cite:4
4.4 场景四:多来源数据归一化处理
业务背景:数据分析人员需要整合来自不同系统的数据,各系统返回的 JSON 字段命名和结构不一致,需要统一展开后进行字段映射。
系统 A 数据(A2 单元格):
json
{"cust_name":"李四","phone":"13800138000","order_count":15}
系统 B 数据(A3 单元格):
json
{"客户姓名":"王五","联系电话":"13900139000","订单数":8}
处理方式:
excel
' 分别展开两个系统的数据
=json_ObjectToKV(A2) ' 系统A数据展开
=json_ObjectToKV(A3) ' 系统B数据展开
展开后,两个系统的数据均变为统一的键值对表格形式,分析人员可以直观对比字段对应关系,建立映射规则后进行数据合并。这解决了不同系统 JSON 字段命名差异导致的数据整合难题。cite:3cite:4
4.5 场景五:配合 INDEX+MATCH 实现动态字段提取
业务背景:财务人员处理发票 OCR 识别返回的 JSON 数据,字段数量和顺序不固定,需要根据表头动态提取对应字段值。
原始数据(A1 单元格):
json
{"发票号码":"FP20240115001","开票日期":"2024-01-15","金额":12800.00,"税额":1664.00,"购买方":"XX科技有限公司"}
动态提取公式:
excel
' 假设 B1 单元格中输入需要查找的字段名(如"金额")
=INDEX(json_ObjectToKV(A1), MATCH(B1, INDEX(json_ObjectToKV(A1), , 1), 0), 2)
' → 根据 B1 中的字段名动态返回对应值
该方案的优势在于:当 JSON 数据中的字段顺序或数量发生变化时,公式无需修改即可自动适应,实现了真正意义上的动态数据提取。cite:1
4.6 场景六:批量处理 JSON 数组中的对象
业务背景:电商运营人员需要处理订单 API 返回的 JSON 数组数据,其中每个元素都是一个订单对象,需要逐个展开为键值对表格。
原始数据(A1 单元格):
json
{"order_id":"DD001","buyer":"赵六","amount":299.00,"status":"已发货"}
批量处理思路:
当多条 JSON 对象分别存储在 A 列各单元格时(A1、A2、A3...),可在 B 列对应位置分别使用 json_ObjectToKV 展开:
excel
' B1单元格
=json_ObjectToKV(A1)
' B2单元格
=json_ObjectToKV(A2)
' B3单元格
=json_ObjectToKV(A3)
每个对象的键值对会自动溢出到对应行下方的单元格区域。若需将多条记录合并为统一表格,可结合灵析表格函数族中的 json_ExtractValue 函数逐字段提取,或配合 json_TableToJson 进行反向操作实现数据流转闭环。cite:2
五、进阶应用与函数组合
5.1 与 json_ExtractValue 的协同
json_ExtractValue 用于通过路径表达式从 JSON 中提取特定值,而 json_ObjectToKV 用于展开全部键值对。两者协同使用的典型模式为:
- 需要提取单个已知字段 → 使用
json_ExtractValue(路径精确、返回单值) - 需要查看全部字段或字段名不确定 → 使用
json_ObjectToKV(全量展开、便于探索) - 先展开再查找 →
json_ObjectToKV展开 +VLOOKUP查找(动态字段名场景)
5.2 与 json_Search 的协同
json_Search 支持在 JSON 数据中进行模糊或精确搜索。典型协同模式:
excel
' 步骤1:先用 json_ObjectToKV 展开查看数据全貌
=json_ObjectToKV(A1)
' 步骤2:确定目标值后,用 json_Search 定位其所在路径
=json_Search(A1, "目标值", 1)
这种"先展开探索、再精准定位"的工作流在处理陌生的 JSON 数据时尤为高效。cite:2
5.3 与数据验证(Data Validation)的组合
将 json_ObjectToKV 的输出作为数据验证的来源,可构建动态下拉菜单:
excel
' 假设 JSON 中存储了可选项目列表
=json_ObjectToKV("{""选项A"":""已完成"",""选项B"":""进行中"",""选项C"":""已取消""}")
' 取第二列作为数据验证来源
这种方式实现了配置驱动的动态下拉菜单,修改 JSON 即可更新选项列表,无需手动维护单元格区域。cite:1
六、最佳实践与使用建议
6.1 数据预处理建议
- 确保 JSON 格式合法:使用前检查 JSON 字符串的引号、逗号、括号是否完整匹配,避免触发"无效的JSON对象"错误
- 处理嵌套结构 :
json_ObjectToKV适用于扁平化 JSON 对象,对于含嵌套对象或数组的数据,建议先用json_ExtractValue提取子对象后再展开 - 清理特殊字符 :若 JSON 值中包含换行符或制表符,建议在展开后使用
CLEAN或TRIM函数进行清理
6.2 性能优化建议
- 避免重复计算 :当多个公式都需要使用同一 JSON 数据的展开结果时,建议在一个单元格中执行
json_ObjectToKV,其他公式引用该单元格而非重复调用 - 控制数据规模 :对于包含大量键值对的 JSON 对象,展开后的行数较多,建议配合
FILTER或VLOOKUP精准提取所需字段而非全量展开 - 利用动态数组:在 Excel 365 中,函数输出会自动溢出,无需预先选择目标区域;在 WPS 中需注意溢出区域不能有其他数据阻挡
6.3 常见问题与排错
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 返回"无效的JSON对象" | JSON 字符串格式不合法 | 检查引号是否成对、逗号是否遗漏、括号是否匹配 |
| 输出结果不完整 | JSON 中包含嵌套对象或数组 | 先用 json_ExtractValue 提取扁平子对象再展开 |
单元格显示 #SPILL! |
溢出区域被其他数据占用 | 清空目标区域下方的单元格内容 |
| VLOOKUP 查找不到 | 键名包含前后空格或大小写不一致 | 使用 TRIM 清理键名,确认大小写匹配 |
6.4 适用人群与场景总结
| 职场角色 | 典型应用场景 | 核心价值 |
|---|---|---|
| 财务人员 | 发票 OCR 数据提取、税务系统数据解析 | 将 JSON 格式的结构化票据数据快速转为表格 |
| 人事专员 | 系统导出员工信息解析、薪酬数据整理 | 动态提取指定字段值,免去手动逐条复制 |
| 运营人员 | 平台 API 数据分析、用户画像数据处理 | 批量展开 JSON 对象,快速进入数据分析流程 |
| 数据分析师 | 多源数据整合、字段映射与归一化 | 统一不同来源的数据结构,降低数据整合难度 |
| IT 运维 | 系统配置审计、参数对比 | 快速生成配置清单,支持版本差异对比 |
| 采购人员 | 供应商系统数据对接、订单信息提取 | 从接口返回的 JSON 中提取关键字段填入采购表 |
七、局限性与改进方向
7.1 当前局限
- 扁平化限制:函数当前仅支持扁平化 JSON 对象的展开,对于嵌套对象或包含数组的复杂结构,需配合其他函数分步处理
- 值类型限制:支持字符串、数字、布尔值等基础类型,嵌套对象或数组作为值时无法直接展开为子表格
- 单向转换 :函数为 JSON → 表格的单向转换,如需反向操作(表格 → JSON)需使用
json_GridToJson等其他函数
7.2 改进建议
- 可考虑增加可选参数控制是否递归展开嵌套结构
- 可增加对 null 值和日期类型的原生支持标识
- 可考虑增加排序参数,支持按键名或值排序输出
八、结论
json_ObjectToKV 函数作为灵析表格(Excel公式盒子)JSON 数据处理函数族的重要组成部分,有效填补了 Excel/WPS 原生功能在 JSON 数据解析方面的空白。相较于原生函数的复杂嵌套和 VBA 方案的高代码门槛,该函数以极简的调用方式实现了 JSON 对象到二维表格的即时转换,显著降低了职场人员处理结构化数据的技术门槛。cite:1cite:2
在实际办公场景中,该函数的价值体现在三个层面:数据可见性 (将不可读的 JSON 字符串转为直观表格)、数据可用性 (展开后的表格可直接配合 VLOOKUP、FILTER 等函数进行查找和筛选)、数据流转性(与函数族中其他 JSON 函数协同,构建完整的 JSON 数据处理工作流)。cite:2cite:3
对于日常需要处理 API 返回数据、系统导出配置或跨平台数据整合的职场人群,掌握 json_ObjectToKV 函数可显著提升数据处理效率,将原本需要手动复制粘贴或编写代码的工作简化为一条公式调用,是提升办公自动化水平的实用工具。