2016-02-12 45 views
2

DataWeave不喜歡我正在嘗試使用它,而且我不確定如果我做錯了什麼,或者它是DataWeave的限制可能。DataWeave中的動態鍵值對

這裏的情景:我查詢Salesforce和獲得兩個值回:讓我們稱之爲X和Y

這是我想[{X:Y}, {X2:Y2}, {X3:Y3}, ...]然而其返回,用DataWeave它似乎並不可能得到一個鍵值對這樣,相反,它似乎只可能專門爲每個價值的關鍵在於劇本,像這樣:[{Value_X: X, Value_Y: Y}, {Value_X: X2, Value_Y: Y2}, ...]

這是我目前的DataWeave腳本作品,但給了我第二次的結果:

%dw 1.0 
%output application/java 
--- 

payload map { 
    Value_X: $.X, 
    Value_Y: $.Y 
} 

而這裏的DataWeave劇本,我想工作,但不

%dw 1.0 
%output application/java 
--- 

payload map { 
    $.X: $.Y 
} 

回答

7

爲了使您的Dataweave代碼都正常工作,你需要住要與括號要使用的密鑰變量:

%dw 1.0 
%output application/java 
--- 

payload map { 
    ($.X): $.Y 
} 
0

好像DataWeave無法從我的實驗做到這一點。我確實使用Python腳本轉換器來實現它。這裏是XML將正確地做這個翻譯:

<scripting:transformer doc:name="Python"> 
<scripting:script engine="jython"> 
<![CDATA[ 
    map = {} 
    while (payload.hasNext()): 
     next = payload.next() 
     map[next['X']] = next['Y'] 
    result = map 
]]> 
</scripting:script> 
</scripting:transformer> 
7

你可以嘗試下面的圖片是什麼?

enter image description here

+0

我想你可能是正確的軌道上,我認爲這會爲一個正常的輸入工作,但Salesforce的返回ConsumerIterator,和DataWeave拋出這個異常'1。無法強制a:iterator到a:object(com.mulesoft.weave.model.values.coercion.exception.UnsupportedTypeCoercionExc eption)' –

0

在我的情況,我有列名的列值分開。

<results> 
    <meta-data> 
    <column-label>X1</column-label> 
    <column-label>X2</column-label> 
    </meta-data> 
    <data> 
    <column-value>Y1</column-value> 
    <column-value>Y2</column-value> 
    </data> 
</results> 

以下DWL佈局工作:

%dw 1.0 
%output application/json 
--- 
using (y= payload.results) 
y.data map using (x= payload.results.meta-data[$$]) { 
    (x): $ 
} 
-1

最簡單的方法是(payload01.Notification.dynamicProperties map (payload02, indexofPayload02) -> { (payload02.name) : payload02.value })

相關問題