【问题标题】:Convert an array to string inside an object using Dataweave使用 Dataweave 将数组转换为对象内的字符串
【发布时间】:2021-08-20 03:00:35
【问题描述】:

我有一个对象有效负载,其中一个键值对是对象内部的一个数组。如何将该键值对转换为字符串。

输入:

{
   "key1":{
      "sk1":"abc",
      "sk2":12,
      "key2":[
         "aa",
         "bbb",
         "ccc",
         "ddd"
      ]
   }
}

预期输出:

{
   "key1": "sk1: abc, sk2:12, key2: aa,bbb,ccc,ddd"
}

提前致谢

【问题讨论】:

    标签: dataweave mule4


    【解决方案1】:

    通常通过将递归函数与按类型匹配的模式相结合来解决此类问题。

    %dw 2.0
    output application/json
    fun printObject(x) =
        x  match {
                case is String  ->  x
                case is Number -> x as String
                case is Object ->
                    x mapObject ((value, key, index) -> (key): printObject(value)  ) 
                    pluck ((value, key, index) -> key as String ++ ":" ++ value)
                    joinBy(",")
                case is Array -> (x map printObject($)) joinBy(",")
                else -> x
        }
    ---
    payload mapObject ($$): printObject($)
    

    输出:

    {
      "key1": "sk1:abc,sk2:12,key2:aa,bbb,ccc,ddd"
    }
    

    【讨论】:

      【解决方案2】:

      这是我想出的快速方法

      %dw 2.0
      output application/json
      var keys=payload.key1 pluck $$
      var values=payload.key1 pluck $
      fun returnVal(key_index) =  
      values[key_index] 
      ---
      key1:(keys map(v0,k0) -> (v0 as String ++ ':' ++ if(typeOf(returnVal(k0)) ~= 'Array') (returnVal(k0) joinBy  ',') else returnVal(k0)  ) ) joinBy  ','
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-20
        • 1970-01-01
        • 2019-01-02
        • 1970-01-01
        • 2022-01-09
        • 2021-07-23
        • 1970-01-01
        相关资源
        最近更新 更多