如何在mule 4中将数据从对象转换为字符串?

问题描述 投票:0回答:1

每当我需要使用mule 3 [message.payloadAs(java.lang.String)]中的语法在控制台上记录有效负载时,我曾经将有效负载转换为字符串,并且有时用于将对象转换为字符串转换器或对象转换为数组转换器。

但是在骡子4中我没有看到任何转换器,如骡子3和[message.payloadAs(java.lang.String)]也不起作用。

请帮助我任何组件或概念的新语法已经进入骡子4?

输入

[
        {
            "firstName": "Ram",
            "lastName": "Ram1",
            "address": [
                {
                    "street": "a",
                    "city": "b",
                    "state": "c"
                },
                {
                    "street": "a1",
                    "city": "b1",
                    "state": "c1"
                }
            ]
        }

批量图像enter image description here

        <batch:job jobName="Batch_ProcessingBatch_Job" doc:id="2582eccb-720f-499f-99fe-424cab3c9a33" >
            <batch:process-records >
                <batch:step name="Batch_Step1" doc:id="cb045f6b-edd3-426f-8f28-0d20b301fb6d" >
                    <logger level="INFO" doc:name="Logger" doc:id="2491184f-e8d7-47b7-bef0-29bafd43247f" message="In Batch_step1........... #[payload]"/>
                    <batch:aggregator doc:name="Batch Aggregator" doc:id="aa9c1b60-395f-4376-804d-bced200dfb43" size="2">
                        <set-payload value='#[write(payload, "application/json")]' doc:name="Set Payload" doc:id="9d4b27ee-5692-4a99-a93e-bd7c694f398d" />
                        <ee:transform doc:name="Transform Message" doc:id="06064422-1352-4ff9-8817-3e87eb1f4264" >
                            <ee:message >
                                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload map(item,index) -> {
    name: item.firstName,
    surname: item.lastName 
}]]></ee:set-payload>
                            </ee:message>
                        </ee:transform>
                        <logger level="INFO" doc:name="Logger" doc:id="c955490e-fab1-436e-8265-f706a577c9d2" message="In Batch_step1 Aggrigator........... #[payload]" />
                    </batch:aggregator>
                </batch:step>
            </batch:process-records>
            <batch:on-complete >
                <logger level="INFO" doc:name="Logger" doc:id="a3923c90-557b-4955-9c40-afd748719abd" message="#['#####It is oncomplete result####': write(payload, &quot;application/json&quot;)]"/>
            </batch:on-complete>
        </batch:job>

得到错误

Message               : "You called the function 'map' with these arguments: 
  1: String ("[\n  \"{\\n  \\\"firstName\\\": \\\"Ram\\\",\\n  \\\"lastName\\\": \\\"Ram1\...)
  2: Function ((item:Any, index:Any) -> ???)

But it expects arguments of these types:
  1: Array
  2: Function


4| payload map(item,index) -> {
 |  ...
7| }

Trace:
  at map (line: 4, column: 1)
  at main (line: 4, column: 9)" evaluating expression: "%dw 2.0
output application/json
---
payload map(item,index) -> {
    name: item.firstName,
    surname: item.lastName 
}".
Error type            : MULE:EXPRESSION
Element               : Batch_ProcessingFlow/processors/0/route/0/route/0/aggregator/processors/1 @ training-1:Batch Processing.xml:27 (Transform Message)
Element XML           : <ee:transform doc:name="Transform Message" doc:id="06064422-1352-4ff9-8817-3e87eb1f4264">
<ee:message>
<ee:set-payload>%dw 2.0
output application/json
---
payload map(item,index) -> {
    name: item.firstName,
    surname: item.lastName 
}</ee:set-payload>
</ee:message>
</ee:transform>

  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************
mule converters
1个回答
0
投票

快速谷歌搜索后,新的方法是使用#[message.payload as String]中显示的link

© www.soinside.com 2019 - 2024. All rights reserved.