繁体   English   中英

在Dataweave中替换Json中的值

[英]Replace value in Json in Dataweave

ule子的有效载荷在flowVars中(infodata)

[
        {
        "status": "submitted",
        "identity": "",
        "papers": {
            "code1": "12csd3cbsdj",
            "code2": "skd02nd28dn",
            "date": "2016-06-22",
        "party": {
            "due_date": "2016-06-22",
            "personel": {
                "email": "tt@test.com",
                "value": {
                    "amount": "0.10",
                    "inflation": "HIGH"
                }
            }
        }
    }
}
]

在Dataweave里面,(1)如何删除方括号? (2)如何动态替换金额和通货膨胀值(来自flowVars)?

问题2:您可以在dataweave中直接使用flowVars,或者如果值在url中,则可以使用inboundProperties动态设置值。 请参阅: https : //docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation

我在可以动态精确化的位置使用了set变量。在此流程中使用了测试网址: http:// localhost:8083 / test?inflation = HIGH

   <flow name="testFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP">

    </http:listener>
    <logger level="INFO" doc:name="Logger"/>
    <set-variable variableName="dynamicValueAmount" value="#['2']" doc:name="Variable"/>
    <dw:transform-message doc:name="Transform Message">
        <dw:set-payload><![CDATA[%dw 1.0
         %output application/json
         ---
        [
      {
    "status": "submitted",
     "identity": "",
      "papers": {     
  "party": {
    "due_date": "2016-06-22",
    "personel": {
      "email": "tt@test.com",
      "value": {
        "amount": flowVars.dynamicValueAmount,
        "inflation": inboundProperties.'http.query.params'.inflation

      }}}}}
]]]></dw:set-payload>
    </dw:transform-message>
    <object-to-string-transformer doc:name="Object to String"/>
      <set-payload value="#[ message.payload =org.mule.util.StringUtils.replace(message.payload,&quot;[&quot;,&quot;{&quot;);message.payload =org.mule.util.StringUtils.replace(message.payload,&quot;]&quot;,&quot;}&quot;)]" doc:name="Set Payload"/>
           <logger  level="INFO" doc:name="Logger"/>
    </flow>

关于问题一,我在设置有效负载中使用了外部替换功能(工作正常-其他方式)。 我相信可以通过使用Dataweave本身以标准方式实现。 让我们等待答案。

我已经解决了问题1

%dw 1.0
%output application/java
---
{
    data:flowVars.infodata replace /(\[|\])/ with ""
}

我仍在尝试了解如何动态更改问题2的有效负载的内容。

  1. 查看样本flowVar内容,它看起来像一个json对象数组。 那是对的吗? 如果它是数组,则在dataweave内,您可以遍历flowVars.infodata map {}或仅获取第一个对象data: flowVars.infodata[0]
  2. 不确定通过动态更改内容的真正含义。 @star显示了一种如何引用dataweave代码中的任何变量的方法。 也许您可以添加一些要编辑的代码?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM