Apache Nifi JoltTransformJSON JOLT 语法解析

Apache Nifi 系列 之 JOLT 语法解析


前言

今天先记录一下Jolt语法,因为在nifi流程中,学会jolt语法,可以对json进行随意转换成业务需要的格式,对后续使用 JoltTransformJSON 处理器帮助是巨大的。


一、JLOT是什么?

提供一组转换,可以“链接”在一起以形成整体 JSON 到 JSON 的转换。专注于转换 JSON 数据的结构,而不是操作特定的值
官网地址:
Jolt github官网

二、Demo 解析

1.input

{
  "rating": {
    "primary": {
      "value": 3,
      "max": 5
    },
    "quality": {
      "value": 9,
      "max": 5
    },
    "sharpness": {
      "value": 7,
      "max": 10
    },
    "a": {
      "b": {
        "d": 1,
        "max": 20
      }
    }
  }
}

2.json spec

[
  {
    "operation": "shift",
    "spec": {
      "rating": {
      	//左边是对应input,右边是对应输出的结构
       // 输出 -> "Rating" : 3 
       // 输出 -> "RatingRange" : 5 
        "primary": {
          "value": "Rating",
          "max": "RatingRange"
        },
        // * 类似匹配 "rating.[除primary以外的节点]"
        "*": {
          //"rating.*.value"位置的数据移动到"SecondaryRatings.*.Value " 
          // &1表示,向上一级,获取那个值并代入 /  &1 ==  &(1,0)
          // &1 获取出来是什么? 	&0 是value ,&1就是quality,具体的获取逻辑看下图
          "value": "SecondaryRatings.&(1,0).Value",
          "max": "SecondaryRatings.&1.Range",
          //"$"表示把input中json的key拿过来
          "$": "SecondaryRatings.&1.id",
          //这是我自己验证&(?) 如果我增加深层次的对象,怎么获取 &(2) == &(2,0) == &2
          // * 获取到了a, 需要获取到d, 然后声明b,,在声明d,获取d的值, &(2)向上2级,SecondaryRatings.a.value
          "b": {
            "d": "SecondaryRatings.&(2).Value",
            "max": "SecondaryRatings.&2.Range"
          }
        }
      }
    }
  }
]


3. json output

{
  "Rating" : 3,
  "RatingRange" : 5,
  "SecondaryRatings" : {
    "quality" : {
      "id" : "quality",
      "Value" : 9,
      "Range" : 5
    },
    "sharpness" : {
      "id" : "sharpness",
      "Value" : 7,
      "Range" : 10
    },
    "a" : {
      "id" : "a",
      "Value" : 1,
      "Range" : 20
    }
  }
}

Json Jolt教程
参考了 Panda诚 大佬的文字,然后知道了& 怎么获取,下图解释
解析&

总结

今天学习了jolt语法的 * & $
尤其是&(0,0)语法
$

{
  "rating": {
    "a": {
      "b": {
        "d": 1,
        "max": 20
      }
    }
  }
}

后续&(0,1) 继续学习

参考

jolt json to json mapping第一篇

jolt插件使用简介

JSON JOLT介绍 及语法详解-shift篇

深入解析Jolt

使用jolt替换值

Json Jolt教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值