有震动记录吗?什么';这是&;的意思,@等等,操作员?(NiFi,JottTransfermJSON)

有震动记录吗?什么';这是&;的意思,@等等,操作员?(NiFi,JottTransfermJSON),json,apache-nifi,jolt,Json,Apache Nifi,Jolt,是的,有!我提出这个问题是为了分享我的知识和问答方式,因为我自己很难找到:) 感谢(BarbarosÖzhan,见评论)为我指明了正确的方向答案是:看,看,看 如果我错了,请纠正我,但是:哇,据我所知,目前GitHub上的一个.java文件(上一次提交是在2017年)包含了JOLT语法官方文档的相关部分。我不得不使用它的语法,因为我正在使用NiFi并应用了它的JoltTransferMJSON处理器(因此我的问题中出现了SEO滥用,所以更多的人找到了答案) 以下是一些最相关的部分,它们是从中复制

是的,有!我提出这个问题是为了分享我的知识和问答方式,因为我自己很难找到:)

感谢(BarbarosÖzhan,见评论)为我指明了正确的方向

答案是:看,看,看

如果我错了,请纠正我,但是:哇,据我所知,目前GitHub上的一个.java文件(上一次提交是在2017年)包含了JOLT语法官方文档的相关部分。我不得不使用它的语法,因为我正在使用NiFi并应用了它的JoltTransferMJSON处理器(因此我的问题中出现了SEO滥用,所以更多的人找到了答案)

以下是一些最相关的部分,它们是从中复制并稍加编辑的。文档本身更为广泛,并显示了示例

“*”通配符

  • 仅在Shiftr规范的LHS(输入JSON键)端有效
  • “*”通配符可以单独使用,也可以与密钥的一部分匹配
“&”通配符

  • 在LHS(左侧-输入JSON键)和RHS(输出数据路径)上有效
  • 意思是,对“路径”取消引用以获取值,并将该值当作文本键使用
  • 通配符的标准形式是“&(0,0)”
  • 第一个参数是在输入路径中查找值的位置,第二个参数是要使用键的哪一部分(与*键一起使用)
  • 通配符有语法上的糖版本,下面所有的意思都是一样的;糖:'&'='&0'='&(0)'='&(0,0)
  • 语法的sugar版本很好,因为有一组数据转换不需要使用规范形式,例如如果您的输入数据没有任何“前缀”键
“$”通配符

  • 仅在规范的左侧有效
  • 这个通配符的存在反映了一个事实,即输入JSON的“数据”可以同时存在于输入JSON的“值”和“键”中
  • Shiftr的基本操作是复制输入JSON“值”,因此我们需要一种方法来指定我们想要复制输入JSON“键”
  • 因此,“$”指定要使用输入键或输入键派生值作为要放置在输出JSON中的数据
  • “$”与“&”通配符的语法相同,可以读取为,取消引用以获取值,然后将该值用作要输出的数据
  • 有两种情况下,这是有用的
  • 当输入JSON中的“键”需要是输出JSON中的“id”值时,请参见上面的“$”:“SecondaryRatings&1.id”示例
  • 您希望列出所有输入键
“#”通配符

  • 在左侧和右侧均有效,但两侧的行为/格式不同
  • 考虑它的方式是,它允许您指定一个“synthentic”值,也就是在输入数据中找不到的值
  • 在规范的RHS中,#仅在数组上下文中有效,如“[#2]”
  • “[#2]”的意思是,向上移动三个级别,询问该节点有多少个匹配项,然后将其用作数组中的索引
  • 这意味着,当Shiftr对输入数据和规范进行并行树遍历时,它会跟踪它在规范树的每个级别上处理的匹配数
  • 如果您想要获取JSON映射并将其转换为JSON数组,并且不关心数组的顺序,那么这将非常有用
  • 在规范的LHS上,#允许您指定硬编码字符串作为值放置在输出中
  • 该特性的初始用例是能够处理布尔输入值,如果该值为布尔真,则写出字符串“enabled”。注意,这以前是可能的,但需要两个Shiftr步骤
“@”通配符

  • 在规范的两面都有效
  • LHS上的基本“@”
  • 如果要将输入值和输入键都放在输出JSON中的某个位置,则必须使用此通配符
  • 因此,@'通配符是“将树中此级别的数据值复制到输出”的平均值
高级“@”符号通配符

  • 格式类似于“@(3,title)”,其中“3”表示在树的3个级别上查找键“title”,并使用该键上的值
答案是:看和看

如果我错了,请纠正我,但是:哇,据我所知,目前GitHub上的一个.java文件(上一次提交是在2017年)包含了JOLT语法官方文档的相关部分。我不得不使用它的语法,因为我正在使用NiFi并应用了它的JoltTransferMJSON处理器(因此我的问题中出现了SEO滥用,所以更多的人找到了答案)

以下是一些最相关的部分,它们是从中复制并稍加编辑的。文档本身更为广泛,并显示了示例

“*”通配符

  • 仅在Shiftr规范的LHS(输入JSON键)端有效
  • “*”通配符可以单独使用,也可以与密钥的一部分匹配
“&”通配符

  • 在LHS(左侧-输入JSON键)和RHS(输出数据路径)上有效
  • 意思是,对“路径”取消引用以获取值,并将该值当作文本键使用
  • 通配符的标准形式是“&(0,0)”
  • 第一个参数是在输入路径中查找值的位置,第二个参数是要使用键的哪一部分(与*键一起使用)
  • 通配符有语法上的糖版本,下面所有的意思都是一样的;糖:'&'='&0'='&(0)'='&(0,0)
  • 语法的sugar版本很好,因为有一组数据转换不需要使用规范形式,例如如果您的输入数据没有任何“前缀”键
“$”通配符