是否可以匹配 Jolt 移位器中的整个路径?
Is it possible to match an entire path in Jolt shiftr?
假设我要改造以下
原创
{
"data": {
"a": {
"b": {
"c": {
"value": 1
}
}
}
}
}
为简单起见,假设我只想将 value
更改为 newValue
结果
{
"data" : {
"a" : {
"b" : {
"c" : {
"newValue" : 1
}
}
}
}
}
我可以使用以下 Jolt 规格来做到这一点:
规格
[
{
"operation": "shift",
"spec": {
"data": {
"a": {
"b": {
"c": {
"value": "&4.&3.&2.&1.newValue"
}
}
}
}
}
}
]
但我觉得应该有一个不那么冗长的语法......也许像下面这样(不起作用):
所需语法...或类似语法
[
{
"operation": "shift",
"spec": {
"data.a.b.c.value": "data.a.b.c.newValue" // Even nicer to use & somehow
}
}
]
是否有任何我缺少的 Jolt 移位器功能可以使它变得更好?
不存在执行此操作的现有转换。
几个问题:
1) 您想要的转换更像是 "nudge" 而不是 "shift"。因为您想要更改 Json 树中的单个值,而让树的其余部分保持不变。这在 Jolt 中不存在。
"shift" 制作一个新的输出映射,"copies" 数据从输入到输出。
我尝试对相同的输入 Json 树结构进行移位写入,但它是 "dangerous" 因为它很容易 运行 进入 ConcurrentModification 异常。
2) 您布置的转换样式非常适合简单的事情,但我不知道它如何扩展到所有复杂的通配符逻辑(*、[]、&)。
就是答案
{
"operation": "modify-overwrite-beta",
"spec": {
"jobInput": {
"ai": {
"common": {
"seed": "@(4,ai.model_structure.seed)"
}
}
}
}
}
@(4,ai.model_structure.seed)
上句表示在 json 树上向后 4step 并使用 seed 与此路径(ai.model_structure.seed).
假设我要改造以下
原创
{
"data": {
"a": {
"b": {
"c": {
"value": 1
}
}
}
}
}
为简单起见,假设我只想将 value
更改为 newValue
结果
{
"data" : {
"a" : {
"b" : {
"c" : {
"newValue" : 1
}
}
}
}
}
我可以使用以下 Jolt 规格来做到这一点:
规格
[
{
"operation": "shift",
"spec": {
"data": {
"a": {
"b": {
"c": {
"value": "&4.&3.&2.&1.newValue"
}
}
}
}
}
}
]
但我觉得应该有一个不那么冗长的语法......也许像下面这样(不起作用):
所需语法...或类似语法
[
{
"operation": "shift",
"spec": {
"data.a.b.c.value": "data.a.b.c.newValue" // Even nicer to use & somehow
}
}
]
是否有任何我缺少的 Jolt 移位器功能可以使它变得更好?
不存在执行此操作的现有转换。
几个问题:
1) 您想要的转换更像是 "nudge" 而不是 "shift"。因为您想要更改 Json 树中的单个值,而让树的其余部分保持不变。这在 Jolt 中不存在。
"shift" 制作一个新的输出映射,"copies" 数据从输入到输出。
我尝试对相同的输入 Json 树结构进行移位写入,但它是 "dangerous" 因为它很容易 运行 进入 ConcurrentModification 异常。
2) 您布置的转换样式非常适合简单的事情,但我不知道它如何扩展到所有复杂的通配符逻辑(*、[]、&)。
就是答案
{
"operation": "modify-overwrite-beta",
"spec": {
"jobInput": {
"ai": {
"common": {
"seed": "@(4,ai.model_structure.seed)"
}
}
}
}
}
@(4,ai.model_structure.seed)
上句表示在 json 树上向后 4step 并使用 seed 与此路径(ai.model_structure.seed).