Java ApacheVelocity:从json中删除键/值

Java ApacheVelocity:从json中删除键/值,java,json,apache,velocity,apache-velocity,Java,Json,Apache,Velocity,Apache Velocity,我有一个JSON { "Id": "xxx", "Type": "Transaction.Create", "Payload": { "result": 2, "description": "Pending", "body": { "redirect": { "url": "xxx", "fields": {

我有一个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 velocity实现这一点

有效的方法是:

#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网关中为webhook转换映射模板。webhook包含很多信息,我们希望删除JSON POST调用的某些部分。

嘿,这对于其他库来说很容易做到,一定是velocity?是的,我想,我需要在AWS中API网关的映射模板中做到这一点。因此,如果它在那里起作用,那就好了。嘿,你解决了这个问题吗?我不知道apache velocity,搜索了一点,但找不到像remove或delete命令一样的东西,我认为一个选项是使用这些apache velocity JSON的信息创建或构建一个新的JSON(比如gson),但不包括卡,然后使用apache velocity在没有卡的情况下发送这个新的JSON,你可以做到吗?嘿,这对其他图书馆来说很容易做到,一定是velocity?是的,我想,我需要在AWS中API网关的映射模板中做到这一点。因此,如果它在那里起作用,那就好了。嘿,你解决了这个问题吗?我不知道ApacheVelocity,搜索了一点,但找不到像remove或delete命令一样的内容,我认为一个选项是使用这些ApacheVelocity JSON的信息创建或构建一个新的JSON(比如gson),但不包括卡,然后使用ApacheVelocity在没有卡的情况下发送这个新的JSON,你能做到吗?