2015-05-01 53 views
0
{ 
    "product1": { 
    "addedBy": "1014", 
    "addedDate": "1429681809598", 
    "campaignName": promotion, 
    "status": "Available" 

    }, 
    "product2": { 
     "addedBy": "1015", 
     "addedDate": "1429681809598", 
     "campaignName": bulkoffer, 
     "status": "Available" 

    }, 
    "product3": { 
     "addedBy": "1015", 
     "addedDate": "1429681809598", 
     "campaignName": premiumoffer, 
     "status": "Available"   
    }  
    } 

在mule中,上面的json是我輸入的數據。我想要在運行時更改狀態值。任何人都可以告訴的方式爲它muler在json中動態插入數據

回答

0

將其轉換爲地圖第一:

<json:object-to-json-transformer returnClass="java.util.HashMap" /> 

然後使用MEL更新地圖

<expression-component>payload.product1.status = 'Unavailable'</expression-component> 

然後將其轉換回JSON當您準備:

<json:object-to-json-transformer /> 
0

另一種方法是使用Dataweave它可以很容易地滿足您的需求nd可以在運行時動態更改"status"的值,其中"status"要更改的元素

<dw:transform-message doc:name="Transform Message"> 
     <dw:set-payload><![CDATA[%dw 1.0 
      %output application/json 
      --- 
      { 
      product1: { 
       "addedBy": payload.product1.addedBy, 
       "addedDate": payload.product1.addedDate, 
       "campaignName": payload.product1.campaignName, 
       "status": "Unavailable" 
      }, 
      product2:{ 
       "addedBy": payload.product2.addedBy, 
       "addedDate": payload.product2.addedDate, 
       "campaignName": payload.product2.campaignName, 
       "status": "Unavailable" 
      }, 
      product3:{ 
       "addedBy": payload.product3.addedBy, 
       "addedDate": payload.product3.addedDate, 
       "campaignName": payload.product3.campaignName, 
       "status": "Unavailable" 
      } 

      } ]]></dw:set-payload> 
    </dw:transform-message>