28 lines
1.2 KiB
JSON
28 lines
1.2 KiB
JSON
[
|
||
{
|
||
"operation": "shift",
|
||
"spec": {
|
||
"ratings": {
|
||
"*": {
|
||
"$": "Ratings[#2].Name",//"Ratings[#2].Name": 将当前键(例如 "primary") 作为值输出到 Ratings[#2].Name。其中 $ 表示键的名称
|
||
"@": "Ratings[#2].Value"//"Ratings[#2].Value": 将当前值(例如 5) 作为值输出到 Ratings[#2].Value。其中 @ 表示值。
|
||
}
|
||
}
|
||
}
|
||
}
|
||
]
|
||
|
||
//#2实际表示向上回溯两级,索引从 0 开始
|
||
//#number 用于引用树中的层级索引
|
||
|
||
//#2的核心作用:回溯路径层级,完成动态索引填充
|
||
//当前路径:root(0) → ratings(1) → *(2) → 当前操作(3)
|
||
//#2表示从第3级向上回溯2级,即回到第1级(ratings层级)
|
||
//回溯后,Jolt会获取该层级(如ratings)下匹配项的运行时索引值(从0开始自动生成)
|
||
//例如:输入JSON的ratings有3个子键:primary(索引0)、quality(索引1)、design(索引2)
|
||
//处理primary时,#2回溯到ratings并获取索引0;处理design时获取索引2
|
||
|
||
//在LHS RHS都可以使用,但是意义不同
|
||
//在RHS, #号只在数组中有效 比如[#2]
|
||
//在LSH中,#允许您指定硬编码字符串作为输出中的值
|
||
//在LSH中,#是根节点,不允许有子节点 |