有震动记录吗?什么';这是&;的意思,@等等,操作员?(NiFi,JottTransfermJSON)
是的,有!我提出这个问题是为了分享我的知识和问答方式,因为我自己很难找到:) 感谢(BarbarosÖzhan,见评论)为我指明了正确的方向答案是:看,看,看 如果我错了,请纠正我,但是:哇,据我所知,目前GitHub上的一个.java文件(上一次提交是在2017年)包含了JOLT语法官方文档的相关部分。我不得不使用它的语法,因为我正在使用NiFi并应用了它的JoltTransferMJSON处理器(因此我的问题中出现了SEO滥用,所以更多的人找到了答案) 以下是一些最相关的部分,它们是从中复制并稍加编辑的。文档本身更为广泛,并显示了示例 “*”通配符有震动记录吗?什么';这是&;的意思,@等等,操作员?(NiFi,JottTransfermJSON),json,apache-nifi,jolt,Json,Apache Nifi,Jolt,是的,有!我提出这个问题是为了分享我的知识和问答方式,因为我自己很难找到:) 感谢(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”,并使用该键上的值
- 仅在Shiftr规范的LHS(输入JSON键)端有效
- “*”通配符可以单独使用,也可以与密钥的一部分匹配
- 在LHS(左侧-输入JSON键)和RHS(输出数据路径)上有效
- 意思是,对“路径”取消引用以获取值,并将该值当作文本键使用
- 通配符的标准形式是“&(0,0)”
- 第一个参数是在输入路径中查找值的位置,第二个参数是要使用键的哪一部分(与*键一起使用)
- 通配符有语法上的糖版本,下面所有的意思都是一样的;糖:'&'='&0'='&(0)'='&(0,0)
- 语法的sugar版本很好,因为有一组数据转换不需要使用规范形式,例如如果您的输入数据没有任何“前缀”键
- 仅在规范的左侧有效