当前位置: 首页 > news >正文

kettle从入门到精通 第107课 ETL之kettle json_input 一个点号引发的血案

场景:在一个kettle交流群内,有一个小伙伴求助:大致意思是json input的输入参数的key中存在点号,凡是带点号的key都无法正确获取。

今天一起来分析下使用多种方式来解决这个问题,希望后续有人遇到此类问题时可以秒杀它,而不是花费N根头发!!!

8746369011430d419de78c90fe441cd0

 1、json数据构造

{"id": "1","eng.name": "javaxiaojingang","chn.name": "Java小金刚"
}

上述json数据中,eng.name和chn.name 两个key中都有点号。

2、json input 提取

1)使用$.eng.name和$.'eng.name' 都无法提取到该key的值,输出为null,如下图所示

6380e2c6-8fe7-4968-8efc-f182ee065aa3

 2)使用javascript步骤将key中的点号替换为_

脚本如下:

function replaceDotInKeys(obj) {if (typeof obj!== 'object' || obj === null) {return obj;}if (Array.isArray(obj)) {var result = [];for (var i = 0; i < obj.length; i++) {result.push(replaceDotInKeys(obj[i]));}return result;}var newObj = {};for (var key in obj) {var newKey = key.replace(/\./g, '_');newObj[newKey] = replaceDotInKeys(obj[key]);}return newObj;
}var jsonObj = JSON.parse(jsonStr);
// 处理对象的键
var newObj = replaceDotInKeys(jsonObj);
// 将处理后的对象转换回 JSON 字符串
var newJsonStr = JSON.stringify(newObj);

 

e0dfd870-6382-4400-b1c2-843885a7cf8c

 使用$.eng_name 进行提取key的值即可

a77fecd5-02ad-4064-b82b-9265508f7b09

3)使用$.['eng.name'] 方式提取

群里一个小伙伴经过一番研究源码&测试之后发现支持这种方式可以直接提取,如下图所示:

3e6ddc92-95ba-453a-bd6f-f19138d0e4f2

3、使用python插件提取

 python代码如下:

import json# 定义 JSON 字符串try:# 将 JSON 字符串解析为 Python 字典data = json.loads(jsonStr)# 提取 id 的值id = data.get('id')# 提取 chn.name 的值chnName = data.get('chn.name')
except json.JSONDecodeError:print("输入的不是有效的 JSON 字符串。")

cfd44372-6e80-4cd1-bc22-588fcd220d9e

 写在最后

小伙伴们,你们还有其他的解决方法吗?欢迎评论区留言探讨。

image

 

http://www.wxhsa.cn/company.asp?id=3952

相关文章:

  • 【2024-2025第二学期】助教工作学期总结
  • Clion 实现多个 main 函数执行互不影响
  • 腾讯终于对Claude code下手了?我拿它跑完一个真实项目,结果有点意外…
  • 快速利用AI读论文
  • 第一周预习作业(AI)
  • HTTP协议核心概念全解析 - 实践
  • Django过时了吗?从ASGI到AI时代的思考
  • 日常练习一部分
  • 世界史
  • 罗技M275鼠标滚轮断轴维修:建模+3D打印修复全过程
  • Unity:网络编程
  • 【比赛记录】2025CSP-S模拟赛45
  • PWN手的成长之路-01
  • SpringCloud全解:核心组件与实战案例 - 教程
  • 学起plus刷课
  • Windows 安装人大金仓数据库 KingbaseES_V008R006
  • Hadoop(十) - 教程
  • 如何注入像 MyBatis 一样注入接口
  • 深入解析:环境搭建与你的第一个 Next.js 应用
  • 在 Ubuntu 中处理中文路径
  • 10 个优质周公解梦网站推荐及解析参考
  • 202212_风二西_冰蝎流量分析
  • 记账:出入报表
  • [AGC028D] Chords 题解
  • 记账:报表
  • 记账:灵活转账
  • 记账:批量更新
  • 记账:水电气话费
  • 《原子习惯》-读书笔记1
  • 记账:记一笔