问题描述
我有一个简单的json负载,其中包含键和值。我想像这样将其转换为owned
。
'key1=value1','key2=value2'
我想将其转换为{
"name":"xyz","age" :"##","contact":"##########"
}
格式。
我还编写了一个小代码,该代码对我不起作用,并且会引发错误“无法将数组强制转换为对象”。
代码1:
'name=xyz','age=##','contact=##########'
代码1输出:***%dw 2.0
output application/json
---
(payload mapObject(value,key)->{
(key):(key) ++ "=" ++ " '" ++ value ++ "'"
}pluck(value,key)->{(key):(value)})***
但出于相同的目的,如果我编写以下代码2,那么它对我来说很好。
代码2:
(error)"cannot coerce Array into object"
代码2输出:***%dw 2.0
output application/json
---
(payload mapObject{
($$): (($$) ++ "=" ++ "'" ++ ($) ++ "'")
} pluck ($) joinBy ",")***
但是我想知道为什么代码1会同时给出错误,以及如何解决这个问题。
解决方法
您几乎完全正确。唯一的问题-对Mule的操作员评估顺序有些奇怪。它并不总是符合您的想法。易于修复-用括号提供清晰的顺序。
%dw 2.0
var x={
"name":"xyz","age" :"##","contact":"##########"
}
output application/java
---
"'" ++
(
( x mapObject(value,key)->(
(key):(key) ++ "'='" ++ value ++ "'"
)
) pluck ( $ ) joinBy ",'"
)
这是另一个示例,您如何将数组转换为字符串 https://simpleflatservice.com/mule4/ArrayAsStringViaJava.html 但是,它使用Java引号加上双引号而不是单引号。