Mule(Dataweave)将JSON数组转换为字符串

时间:2017-01-05 17:28:52

标签: json mule dataweave

这可能很简单,但我在搜索中找到的所有内容与我的问题只是模糊不清。

我有这个:

{
  "user":"C03999",
  "caseNumber":"011-1234567",
  "documents":[
    {
        "file":[
            {"name":"indem1","document":"xSFSF%%GSF","mimeType":"PDF"},
            {"name":"indem2","document":"xSFSF%%GSF","mimeType":"PDF"}
            ]
        }
    ],
  "mortgagee":"22995",
  "billTo":"Originator",
  "agreementDate":"2016-11-25",
  "term":360,
  "expirationDate":"2017-11-25",
  "startDate":"Agreement",
  "lenderEndorsed":true,
  "lenderExecutedAgreement":false,
  "indemnificationAgreementTransferable":false,
  "qadLrsFileNumber":"2016-99999-9999",
  "docketNumber":"2016-9999-99"
}

我想从中得到这个字符串: indem1,indem2

我创建了一个全局函数:

<configuration doc:name="Configuration">
     <expression-language autoResolveVariables="true">
         <global-functions>
             def convertToString(data){
                 return data.toString();
             }
         </global-functions>
     </expression-language>
</configuration>

我的转换看起来像这样:

%dw 1.0
%output application/csv
---
payload.documents.file map {
      "" : convertToString($.name)
}

我的输出如下: [indem1 \,indem2]

我需要做什么才能获得我想要的字符串(indem1,indem2)?

1 个答案:

答案 0 :(得分:2)

你的问题标题是“JSON数组到字符串”,但上面附带的数据编码代码在输出中有application / csv。

您是否正在尝试转换为csv?如果这是期望,逗号是.csv格式的保留字符,这就是为什么,使用反斜杠[indem1 \,indem2]进行转义。

如果您打算转换为java,这里是返回String值的代码。

%dw 1.0

%输出应用程序/ java

payload.documents [0] .file。* name joinBy','