2016-04-21 46 views
3

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


输入

{ 
    "attr": [ 
     { 
      "name": "first", 
      "validations": [ 
       { 
        "type": "Required", 
        "value": true 
       } 
      ] 
     }, 
     { 
      "name": "last", 
      "validations": [ 
       { 
        "type": "lenght", 
        "value": "10" 
       } 
      ] 
     }, 
     { 
      "name": "email", 
      "validations": [ 
       { 
        "type": "min", 
        "value": 10 
       } 
      ] 
     } 
    ] 
} 

输出

{ 
 
    "out" : [ 
 
    { 
 
     "name" : "first", 
 
     "required" : "yes" 
 
    },{ 
 
     "name" : "last" 
 
    },{ 
 
     "name" : "email" 
 
    } 
 
    ] 
 
}

所以我能够得到的条件,但内部条件下,&和@分别是输入,而不是输出。任何人都可以帮助我完成转型。以下是我迄今为止撰写的规范。

[ 
 
    { 
 
    "operation": "shift", 
 
    "spec": { 
 
     "attr": { 
 
     "*": { 
 
      "name": "out.&1.name", 
 
      "validations": { 
 
      "*": { 
 
       "type": { 
 
       "Required": { 
 
        "@(2,value)": "out.&1.req" 
 
       } 
 
       } 
 
      } 
 
      } 
 
     } 
 
     } 
 
    } 
 
    } 
 
]

回答

2

该规范不变换。

[ { "operation": "shift", "spec": { "attr": { "*": { "name": "out[&1].name", "validations": { "*": { "type": { "Required": { "#yes": "out[&5].required" } } } } } } } } ]

不过,我觉得你的意思是抢“值”:真的是“必需”的兄弟:真实的,而不是有输出是“是”。

如果是这样交换这一点。 "Required": { "@(2,value)": "out[&5].required" }

+0

非常感谢。有效。但我无法理解&5的用法。你能解释一下我们需要从哪里穿过树? – yeswanth