kettle学习(利用jsonPath定位,json文件转换)
于数据处理的广袤天地间,我们时常需应对各类繁杂状况与各式格式。
Kettle 作为极具威力的数据集成利器,赋予了我们诸多功能与无限可能此次博客里,我们将重点投向 Kettle 的研习,
确切地说,是如何借助 jsonPath 这一强劲的手段来精确锚定和处置 JSON 文件。
借由深入探究 json 文件的转换流程,我们将一道揭开数据处理那神秘的面纱,牢牢把握高效且精准地处理与转换数据的技巧及方法。
让我们开启这趟满含挑战与收获的数据征程,持续提升自身于数据处理领域的能力层级与水准层次。
一、准备数据
josn文件取自,boss直聘中的城市数据
获取到该页面的json数据之后,双击进入源代码内,按住crtl+s保存json文件到本地
二、数据加载
- 输入JSON input
- 加载文件
三、数据定位
- JSONPath 是一种用于在 JSON 数据中定位和提取特定元素的查询语言。
- 它类似于 XPath 对 XML 的作用,可以帮助我们轻松地按照特定的路径表达式从复杂的 JSON 结构中获取所需的数据。以下是 JSONPath 的一些常见语法和示例:
基本概念:
什么是 JSONPath:JSONPath 是一种用于在 JSON 数据中定位和提取特定元素的查询语言。
JSONPath 的作用和重要性:数据提取和过滤、数据导航和遍历、API 集成和数据交互、数据转换和处理。
JSON 数据结构回顾:
什么是 JSON:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
JSON 的特点:人类可读性高、数据格式简单、可嵌套和可扩展、平台无关性。
JSON 数据类型:对象(Object)、数组(Array)、字符串(String)、数字(Number)、布尔值(Boolean)、空值(null)。
JSON 对象和数组:对象是一种无序的键值对集合,每个键值对由一个属性名和对应的值构成。数组是一个有序的值列表,可以包含任意数据类型的元素。
嵌套 JSON 结构:JSON 允许在对象或数组中嵌套其他 JSON 对象或数组,从而形成复杂的数据结构。
JSONPath 表达式:
JSONPath 常见的运算符:$(根元素)、.(子元素)、[](数组索引或键)、*(通配符)。
JSONPath 常见的函数:length()(数组长度)、max()(最大值)、min()(最小值)、avg()(平均值)。
JSONPath 数据提取案例:
{
"商店": {
"书籍": [
{
"分类": "惊悚",
"作者": "R.L.斯坦",
"书名": "鸡皮疙瘩",
"价格": 18.95
},
{
"分类": "冒险",
"作者": "J.K.罗琳",
"书名": "哈利波特与火焰杯",
"书号": "ND-2131-34421",
"价格": 52.99
},
{
"分类": "科幻",
"作者": "刘慈欣",
"书名": "三体",
"价格": 65.35
},
{
"分类": "科幻",
"作者": "刘慈欣",
"书名": "流浪地球",
"价格": 32.99
}
],
"自行车": {
"品牌": "凤凰牌自行车",
"颜色": "红色",
"价格": 150.3
}
}
}
测试样例:
$.商店.书籍[0].书名:获取商店中第一本书的书名。
$.商店.书籍[*].作者:获取商店中所有书的作者。
$.商店.自行车.品牌:获取商店中自行车的品牌。
JSONPath 与 XPath 的对比:
JSONPath 和 XPath 都是用于在数据结构中进行查询和导航的路径语言,但它们针对不同的数据格式。
- 分析本文章中的json
我们要获得所有jobname的值的话,
采用jsonpath:
**$.zpData.jobList..jobName**
后面实验可知道下面这种方法也可以
**$.zpData.jobList[*].jobName**
不过两种用法在某些情况结果可能不一样
$.zpData.jobList…jobName 和 $.zpData.jobList【*】.jobName 的区别
可能在于它们在解析和获取 JSON 数据中的 jobName 值时的方式略有不同。
- $.zpData.jobList…jobName 使用了双点号(…)表示递归下降操作符。它会在 zpData.jobList 数组的所有嵌套层级中查找名为 jobName 的属性,并返回所有匹配的结果。
- $.zpData.jobList【】.jobName 使用了方括号(【】)表示通配符索引。它会在 zpData.jobList 数组的每个元素中查找名为 jobName 的属性,并返回所有匹配的结果。
总的来说,这两种表达式的主要区别在于它们在处理嵌套数组和对象结构时的方式不同。具体使用哪种方式取决于 JSON 数据的结构和需求。
四、文件输出
- 最后拖进excel输出,显示字段名,然后执行就可以了。