Jolt 条件规范

yes*_*nth 6 java json jolt

我想要一个条件转换,如果输入中特定字段的值与我的条件匹配,我需要在输出中添加一个属性。下面是我需要的输入和输出。


输入

{
    "attr": [
        {
            "name": "first",
            "validations": [
                {
                    "type": "Required",
                    "value": true
                }
            ]
        },
        {
            "name": "last",
            "validations": [
                {
                    "type": "lenght",
                    "value": "10"
                }
            ]
        },
        {
            "name": "email",
            "validations": [
                {
                    "type": "min",
                    "value": 10
                }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

输出

{
    "attr": [
        {
            "name": "first",
            "validations": [
                {
                    "type": "Required",
                    "value": true
                }
            ]
        },
        {
            "name": "last",
            "validations": [
                {
                    "type": "lenght",
                    "value": "10"
                }
            ]
        },
        {
            "name": "email",
            "validations": [
                {
                    "type": "min",
                    "value": 10
                }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

所以我能够得到条件,但在条件内部,& 和 @ 分别对应于输入而不是输出。任何人都可以帮助我进行转换。以下是我到目前为止编写的规范。

{
  "out" : [
    {
      "name" : "first",
      "required" : "yes"
    },{
      "name" : "last"
    },{
      "name" : "email"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

Mil*_*o S 3

这个规范进行了转换。

[
  {
    "operation": "shift",
    "spec": {
      "attr": {
        "*": {
          "name": "out[&1].name",
          "validations": {
            "*": {
              "type": {
                "Required": {
                  "#yes": "out[&5].required"
                }
              }
            }
          }
        }
      }
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

但是,我认为您的意思是获取“value”:true,它是“Required”:true的同级,而不是让输出为“yes”。

如果是这样,请交换该位。

"Required": {
 "@(2,value)": "out[&5].required"
}
Run Code Online (Sandbox Code Playgroud)