Mule (Dataweave) 将 JSON 数组转换为字符串
Mule (Dataweave) transform JSON array to string
这可能很简单,但我在搜索中找到的所有内容都只是模糊地与我的问题相关。
我有这个:
{
"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"
}
我想从中取出这个字符串:
独立 1,独立 2
我创建了一个全局函数:
<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)
}
我的输出如下:
[独立 1\, 独立 2]
我需要做什么才能得到我想要的字符串 (indem1,indem2)?
你的问题标题说“JSON array To string”但是上面附加的数据编织代码在输出中有 application/csv。
您要转换成 csv 吗??如果这是预期,逗号是 .csv 格式的保留字符,这就是 , 被反斜杠转义的原因 [indem1\,indem2]。
如果你的意图是转换成java,这里是returns字符串值的代码。
%dw 1.0
%输出application/java
payload.documents[0].file.*name joinBy ','
一般来说,如果您有一个对象,并且需要以给定格式/MIME 类型写入该对象的一部分,请使用 write() 函数dw::Core 模块。如果您需要读取对象中的一些内容是 JSON/JAVA/CSV 而其余的是其他格式,请在同一模块中使用 read() 函数。
例如,假设您的负载为:
{
field1: "foo",
field2: { nested: "value" }
}
此外,假设您希望对象为 JAVA,但“field2”值被视为 JSON。你可以使用这个 DW:
output application/java
---
{
field1: payload.field1,
field2: write(payload.field2,'application/json')
}
结果是:
{
field1: "foo",
field2: '{ "nested": "value" }'
}
注意“field2”现在显示为嵌套的 JSON 对象,而不是 JAVA 对象。一种判断方法是 JSON 对象中的键在引号中,但在 JAVA 对象中它们不是。
这可能很简单,但我在搜索中找到的所有内容都只是模糊地与我的问题相关。
我有这个:
{
"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"
}
我想从中取出这个字符串: 独立 1,独立 2
我创建了一个全局函数:
<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)
}
我的输出如下: [独立 1\, 独立 2]
我需要做什么才能得到我想要的字符串 (indem1,indem2)?
你的问题标题说“JSON array To string”但是上面附加的数据编织代码在输出中有 application/csv。
您要转换成 csv 吗??如果这是预期,逗号是 .csv 格式的保留字符,这就是 , 被反斜杠转义的原因 [indem1\,indem2]。
如果你的意图是转换成java,这里是returns字符串值的代码。
%dw 1.0
%输出application/java
payload.documents[0].file.*name joinBy ','
一般来说,如果您有一个对象,并且需要以给定格式/MIME 类型写入该对象的一部分,请使用 write() 函数dw::Core 模块。如果您需要读取对象中的一些内容是 JSON/JAVA/CSV 而其余的是其他格式,请在同一模块中使用 read() 函数。
例如,假设您的负载为:
{
field1: "foo",
field2: { nested: "value" }
}
此外,假设您希望对象为 JAVA,但“field2”值被视为 JSON。你可以使用这个 DW:
output application/java
---
{
field1: payload.field1,
field2: write(payload.field2,'application/json')
}
结果是:
{
field1: "foo",
field2: '{ "nested": "value" }'
}
注意“field2”现在显示为嵌套的 JSON 对象,而不是 JAVA 对象。一种判断方法是 JSON 对象中的键在引号中,但在 JAVA 对象中它们不是。