Java ApacheVelocity:从json中删除键/值
我有一个JSONJava 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": {
{
"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,你能做到吗?