转换JSON负载

时间:2020-10-25 10:38:28

标签: dataweave mulesoft mule4

我有一个简单的json负载,其中包含键和值。我想像这样将其转换为owned

例如,我有一个json:

'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会同时给出错误,以及如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

您几乎完全正确。唯一的问题-对Mule的操作员评估顺序有些奇怪。它并不总是符合您的想法。易于修复-用括号提供清晰的顺序。

%dw 2.0
var x={
"name":"xyz",
"age" :"##",
"contact":"##########"
}
output application/java
---
"'" ++
(
  ( x mapObject(value,key)->(
      (key):(key) ++ "'='" ++ value ++ "'"
    )
  ) pluck ( $ ) joinBy ",'"
)

enter image description here 这是另一个示例,您如何将数组转换为字符串 https://simpleflatservice.com/mule4/ArrayAsStringViaJava.html 但是,它使用Java引号加上双引号而不是单引号。

相关问题