【动态数组】通过TEXTSPLIT函数批量提取JSON格式数据
WPS函数专家
要想下班早,表格必须用的好!
大家好,我是张俊。
⭐场景
近期接到宝子们咨询,说公司给出的数据是JSON格式的数据,请问如何将数据按照对应关系提取到WPS表格中呢?具体数据如下图所示:
- 问题分析
1.1 啥是JSON格式?
如果不懂JSON格式数据的话,大家看到这样是格式可能比较懵,接下来我先解释下啥是JSON格式的数据?
看到上段文字大家的感觉是啥?是不是似懂非懂?感觉懂了,又感觉啥也没有懂?感觉每个字都认识,放在一起就都不认识了?其实这就是不懂编程的人看到专业术语和格式的第一看法和想法。
如果懂编程的话,就大部分都知道JSON格式数据,如果不知道的,简单的解释下就懂了。如果懂JS的话,就是字典对象(Object)中包含数组(Array),数组(Array)中包含字典对象(Object);如果懂Python的话,就是字典(dict)中包含列表(list),列表(list)中包含字典(dict)。
1.2 JSON数据结构
如果不懂编程话,就以本数据简化,具体看下图解释:
通过上图,我们可以看出,此数据的格式如下:
最外层是一对花括号"{}"包裹
各个分类之间之间用逗号","隔开
各个分类与岗位之间用冒号":"隔开
各岗位外层用中括号"[]"包裹,之间用逗号","隔开
所有的分类和岗位都用单引号"'"包裹
以上所有的符号都是英文半角状态下的符号
这下应该可以了解清楚JSON格式的数据之间结构了吧?
- 确定拆分符
我们根据学习TEXTSPLIT函数的基础教程(【动态数组】以动态数组视角学习TEXTSPLIT函数基本用法)和进阶教程(【动态数组】以动态数组视角学习TEXTSPLIT函数进阶用法)可以得知需要确定按列拆分分隔符和按行拆分分隔符。
2.1 按行拆分符
按行拆分就是将数据根据指定的分隔符(参数3)拆分成各行,通过上图可以看出,最适合的按行拆分符就是右中括号和逗号"],"
2.2 按列拆分符
按列拆分就是根据数据的分隔符(参数2)拆分成各列,通过上图可以看出,需要多个分隔符组成 ,如:左花括号"{"、单引号"'"、冒号":"、左中括号"["、逗号","、右中括号和右花括号"]}",有时符号之间还会有空格产生,因此也需要将空格" "也要作为分隔符,最终效果按列拆分符为数组,表格数组以一对花括号"{}"包裹,各个符号用双引号""包裹,各个数组元素之间用逗号","隔开(是不是感觉WPS表格的数组格式和JSON格式有些相似呢?),具体效果如下图:
💡 | 由于最后的一行数据与右花括号之间没有逗号",",因此在按行拆分分隔符(参数3)时不会将其拆分,因此这里要用右中括号和右花括号"]}" |
- 实现效果
具体实现公式如下:
=TEXTSPLIT(A1,{"{","'",":","[",",","]}"," "},"],",1,,"")
为了对函数便于理解,我特别加了颜色和标示加以区分参数2和参数3,具体如下:
公式解释:
1.由于TEXTSPLIT函数根据分隔符拆分后,原本的位置就会留下空白单元格,因此需要通过忽略空白单元格(参数4为1或TRUE)来处理
2.由于各个分类的岗位之间不一定是一样的数量,不足的回报#N/A错误,因此需要将异常返回值(参数6)转化为空值
- 方法总结
当有很多个字符都需要批量处理时,千万不要多层嵌套TEXTSPLIT函数,其实按列拆分分隔符(参数2)和按行拆分分隔符(参数3)只需要将各个分隔符以表格数组形式(以一对花括号"{}"包裹,各个符号用双引号""包裹,各个数组元素之间用逗号","隔开)展示即可。
关于通过TEXTSPLIT函数提取JSON格式数据,你学会了吗?学会的话,记得得点赞❤️❤️❤️和收藏⭐⭐⭐并在评论区评论“我学会了!”,您的点赞❤️❤️❤️、收藏⭐⭐⭐和评论是对我最大的支持!
🚩 | 练习文件:👉通过TEXTSPLIT函数批量提取JSON格式数据👈 |
个人往期帖子合集:【帖子合集】个人往期帖子合集来了!
创作者俱乐部成员
WPS函数专家
创作者俱乐部成员
WPS函数专家
WPS函数专家
WPS函数专家
WPS函数专家
WPS函数专家