【问题标题】:MuleSoft transform gives error while transforming using DWL for JSON payloadMuleSoft 转换在使用 DWL 转换 JSON 有效负载时出错
【发布时间】:2018-04-02 18:48:48
【问题描述】:

我是 MuleSoft 的新手。我正在尝试使用转换转换 JSON 有效负载。 我想将我的有效载荷转换如下

输入:

{
    "ResponseStatus": {
        "Status": "SUCCESS",
        "StatusText": "SUCCESS"
    },
    "Processes": {
        "Process": [
            {
                "ProcessId": "1234567",
                "ProcessProperties": {
                    "Property": [
                        {
                            "Name": "XXXXXXXXXXX",
                            "Value": "11111111",
                            "Desc": "YYYYYYYY"
                        },
                        {
                            "Name": "AAAAAAAAA",
                            "Value": "2222222",
                            "Desc": "BBBBBBBB"
                        },
                        {
                            "Name": "QQQQQQQQQ",
                            "Value": "#######",
                            "Desc": "CCCCCCCC"
                        },
                        {
                            "Name": "NNNNNNN",
                            "Value": "IIIIIIII",
                            "Desc": "UYUYUYUY"
                        }
                    ]
                },
                "EditMode": "CCCCCC",
                "ProcessType": "ABCD",
                "AppName": "VFVFVGBG",
                "StatusHistory": {
                    "STS": [
                        {
                            "Sts": "COMPLETED"
                        }
                    ]
                }
            }
        ]
    }
}

输出:

[
  {
    "ProcessId": "1234567",
    "AAAAAAAAA": "2222222",
    "QQQQQQQQQ": "#######"
  }
]

我已从 Mulesoft link 下方阅读了 DWL 参考。也参考了 this SO 链接。

以下是我目前尝试过的,

%dw 1.0
%output application/json
---
{
"ProcessId": (payload.Processes.Process.ProcessId)[0],

AAAAAAAAA: {
                        (payload.Processes.Process.ProcessProperties.Property mapObject {
($.Name):$.Value when $.Name =="AAAAAAAAA" otherwise ""
                        })
            },
   QQQQQQQQQ: {

        (payload.Processes.Process.ProcessProperties.Property mapObject {
($.Name):$.Value when $.Name =="QQQQQQQQQ" otherwise ""
                         })
            }
}

我仍然无法获得所需的输出。

它给了我“无法将 :array 强制转换为 :key”

谁能帮帮我?

【问题讨论】:

    标签: mule


    【解决方案1】:

    输入 json 中的“property”json 元素是“Array”,它无法解析为单个值。

    请尝试下面的 sn-p 并告诉我是否可以满足您的需求。

    payload.Processes.Process map (
    (val , index) ->
    
        {"ProcessId":(payload.Processes.Process.ProcessId)[0]
         ,
    
        (val.ProcessProperties.Property map {
    
            (($.Name) : $.Value) when  $.Name =='AAAAAAAAA'  }
    
        ),
    
        (val.ProcessProperties.Property map {
    
            (($.Name) : $.Value) when  $.Name =='QQQQQQQQQ'  }
    
        )
    
    }
    )
    

    【讨论】:

    • 很高兴,它有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多