2

我有一个 JSON

{
    "Id": "xxx",
    "Type": "Transaction.Create",
    "Payload": {
        "result": 2,
        "description": "Pending",
        "body": {
            "redirect": {
                "url": "xxx",
                "fields": {
                    "MD": "8a829449620619e80162252adeb66a39"
                }
            },
            "card": {
                "expiryMonth": "1",
                "expiryYear": "2033"
            },
            "order": {
                "amount": 1
            }
        }
    }
}

我想像这样删除它的卡信息:

{
    "Id": "xxx",
    "Type": "Transaction.Create",
    "Payload": {
        "result": 2,
        "description": "Pending",
        "body": {
            "redirect": {
                "url": "xxx",
                "fields": {
                    "MD": "8a829449620619e80162252adeb66a39"
                }
            },
            "order": {
                "amount": 1
            }
        }
    }
}

我怎样才能用 Apache 速度做到这一点?

有效的是:

#set($content = $util.urlEncode($input.json('$')))
#set($new = $content.replaceAll("2033","2055"))
Action=SendMessage&MessageBody={"body": "$new","Event-Signature": "$util.urlEncode($input.params('Event-Signature'))"}

这给了我

{
    "Id": "xxx",
    "Type": "Transaction.Create",
    "Payload": {
        "result": 2,
        "description": "Pending",
        "body": {
            "redirect": {
                "url": "xxx",
                "fields": {
                    "MD": "8a829449620619e80162252adeb66a39"
                }
            },
            "card": {
                "expiryMonth": "1",
                "expiryYear": "2050"
            },
            "order": {
                "amount": 1
            }
        }
    }
}

但是现在我想删除卡部分但它不起作用:

#set($content = $util.urlEncode($input.json('$')))
#set($new = $content.delete("$.Payload.body.card"))
Action=SendMessage&MessageBody={"body": "$new","Event-Signature": "$util.urlEncode($input.params('Event-Signature'))"}

我究竟做错了什么?

主要目标是在 API Gateway 中为 webhook 转换映射模板。webhook 包含许多信息,我们想要删除 JSON POST 调用的某些部分。

4

1 回答 1

0

尝试使用以下

#set($dummy=$content.Payload.remove("card"))
于 2021-07-29T06:18:15.487 回答