Dataweave Transformation (COPYBOOK to JSON) in Mule
This data format conversion COPYBOOK to JSON in dataweave is done by Transform Message component.
flow of copybook to json :

input.ffd(copybook schema) and output.json is stored in src/main/resources

for input meta data choose input.ffd from src/main/resources
input.ffd :
form: FIXEDWIDTH
name: 'input'
values:
- { name: 'id', usage: M, type: Integer, length: 1 }
- { name: 'name', usage: M, type: String, length: 10 }
- { name: 'city', usage: M, type: String, length: 6 }
- { name: 'country', usage: M, type: String, length: 5 }

for output meta data choose output.json from src/main/resources
output.json :
[{
"id" : 1,
"name" : "Himanshu",
"city" : "Pune",
"country": "india"
}]

connect input metadata with output metadata

URL : http://localhost:8085/api/copybooktojson
Method : POST
Input :

Output :

XML project code :
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8085" basePath="/api" doc:name="HTTP Listener Configuration"/>
<flow name="test_dataweavecopybooktojsonFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/copybooktojson" doc:name="HTTP"/>
<dw:transform-message doc:name="Transform Message" metadata:id="9e0359d2-7953-48d7-a2af-cb656b258dcf">
<dw:input-payload mimeType="text/plain">
<dw:reader-property name="schemaPath" value="input.ffd"/>
<dw:reader-property name="segmentIdent"/>
</dw:input-payload>
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload map ((payload01 , indexOfPayload01) -> {
id: payload01.id,
name: payload01.name,
city: payload01.city,
country: payload01.country
})]]></dw:set-payload>
</dw:transform-message>
</flow>
</mule>
flow of copybook to json :
input.ffd(copybook schema) and output.json is stored in src/main/resources
for input meta data choose input.ffd from src/main/resources
input.ffd :
form: FIXEDWIDTH
name: 'input'
values:
- { name: 'id', usage: M, type: Integer, length: 1 }
- { name: 'name', usage: M, type: String, length: 10 }
- { name: 'city', usage: M, type: String, length: 6 }
- { name: 'country', usage: M, type: String, length: 5 }
for output meta data choose output.json from src/main/resources
output.json :
[{
"id" : 1,
"name" : "Himanshu",
"city" : "Pune",
"country": "india"
}]
connect input metadata with output metadata
URL : http://localhost:8085/api/copybooktojson
Method : POST
Input :
Output :
XML project code :
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8085" basePath="/api" doc:name="HTTP Listener Configuration"/>
<flow name="test_dataweavecopybooktojsonFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/copybooktojson" doc:name="HTTP"/>
<dw:transform-message doc:name="Transform Message" metadata:id="9e0359d2-7953-48d7-a2af-cb656b258dcf">
<dw:input-payload mimeType="text/plain">
<dw:reader-property name="schemaPath" value="input.ffd"/>
<dw:reader-property name="segmentIdent"/>
</dw:input-payload>
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload map ((payload01 , indexOfPayload01) -> {
id: payload01.id,
name: payload01.name,
city: payload01.city,
country: payload01.country
})]]></dw:set-payload>
</dw:transform-message>
</flow>
</mule>
No comments:
Post a Comment