【问题标题】:Transform a json payload转换 json 有效负载
【发布时间】:2020-10-25 10:38:28
【问题描述】:

我有一个简单的 json 有效负载,其中包含键和值。我想把它转换成'key1=value1','key2=value2',就像这样。

例如我有一个 json:

{
"name":"xyz",
"age" :"##",
"contact":"##########"
}

我想把它转换成'name=xyz','age=##','contact=##########'的格式。

我还写了一个小代码,它对我不起作用,它抛出错误“无法将数组强制转换为对象”。

代码1:

***%dw 2.0
output application/json
---
(payload mapObject(value,key)->{
    (key):(key) ++ "=" ++ " '" ++ value ++ "'"
}pluck(value,key)->{(key):(value)})***

代码 1 输出:(error)"cannot coerce Array into object"

但是为了同样的目的,如果我写下面的代码2那么它对我来说工作正常。

代码2:

***%dw 2.0
output application/json
---
(payload mapObject{
     ($$): (($$) ++ "=" ++ "'" ++ ($) ++ "'")
} pluck ($) joinBy " , ")***

代码2输出:'name=xyz','age=##','contact=##########'

但我想知道为什么 Code 1 会给出错误,以及如何解决这个问题。

【问题讨论】:

    标签: dataweave mulesoft mule4


    【解决方案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 引号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      相关资源
      最近更新 更多