2016-04-21 47 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