需要将有效负载转换为所需的输出

Need to convert the payload to the desired output

下面的数组中可以有多个对象,每个对象可以有多个键值。我只需要显示 uniqueID 和名称字段。

[
      {
        "uniqueID": "1",
        "Name": "Annie",
        "Standard": "3",
        "School" : "ABC School"
      },
      {
        "uniqueID": "2",
        "Name": "Apoo",
        "Standard": "4",
        "School" : "PQR School"
      },
      {
        "uniqueID": "3",
        "Name": "Xavier",
        "Standard": "5",
        "School" : "MNO School"
      }
]

期望的输出:

{
    "errors": [
        {
            "uniqueID": "1",
            "Name": "Annie"
        },
        {
            "uniqueID": "2",
            "Name": "Apoo"
        },
        {
            "uniqueID": "3",
            "Name": "Xavier"
        }
    ]
}

两种方法。

脚本

%dw 2.0
output application/json
---
errors: payload map {
    uniqueID: $.uniqueID,
    Name: $.Name
}
%dw 2.0
output application/json
---
errors: payload map {
    ($ - "Standard" - "School")
}

除了 Salim Khan 的回答之外,另一种方法是使用 filterObject() 只让输出中需要的属性。优点是如果添加或更改其他属性,它会更通用一些。

%dw 2.0
output application/json
var allowedKeydNames=["uniqueID", "Name"]
---
{
    errors: payload map (
        $ filterObject ((value, key, index) ->  (allowedKeydNames contains (key as String)))
    )
}