Функции DataWeave
Это мой запрос JSON, и я хочу удалить dcsId
поле из моей полезной нагрузки JSON в преобразовании DataWeave.
Как я могу это сделать?
{
"status": "ok",
"statusCode": "11011",
"statusDescription": "Service: Get Profile ; Market: US ; Locale:en-US ; SourceId:DCS; ApiUid: 644e1dd7-2a7f-18fb-b8ed-ed78c3f92c2b; Description: The get profile call was successful.",
"details": {
"dcsId": "rfggrg",
"marketCode": "US",
"languageCode": "en",
"profile": {
"base": {
"username": "abc",
"firstName": "xc",
"middleName": "test",
"lastName": "123",
"shortName": "xc",
"displayName": "D",
"suffix": "T",
"prefix": "E"
}
}
}
}
6 ответов
Вот выражение, которое просто удаляет dcsId
(payload - 'details') ++ {details: payload.details - 'dcsId'}
Чтобы избежать сопоставления других полей в полезной нагрузке, вы можете попробовать это -
%dw 1.0
%output application/json
---
(payload - 'details') ++ (payload.details - 'dcsId')
Сначала он получает все в полезной нагрузке, за исключением деталей, затем добавляет детали, исключая dcsId.
НТН!
Попробуй это
%dw 1.0
%output application/json
---
{
status : payload.status,
statusCode : payload.status,
statusDescription : payload.statusDescription,
details : payload.details - 'dcsId'
}
Надеюсь это поможет.
Попробуй это.
%dw 1.0
%output application/json
---
(payload - 'details')
++
details:(payload.details - 'dcsId')
Сценарий
%dw 2.0
output application/json
---
(payload - 'details') ++ {details: payload.details - 'dcsId'}
Выход
{
"status": "ok",
"statusCode": "11011",
"statusDescription": "Service: Get Profile ; Market: US ; Locale:en-US ; SourceId:DCS; ApiUid: 644e1dd7-2a7f-18fb-b8ed-ed78c3f92c2b; Description: The get profile call was successful.",
"details": {
"marketCode": "US",
"languageCode": "en",
"profile": {
"base": {
"username": "abc",
"firstName": "xc",
"middleName": "test",
"lastName": "123",
"shortName": "xc",
"displayName": "D",
"suffix": "T",
"prefix": "E"
}
}
}
}
Вот рекурсивная функция для удаления ключа с любого уровня полезной нагрузки json.
%dw 2.0
output application/json
var data = {
"status": "ok",
"statusCode": "11011",
"statusDescription": "Service: Get Profile ; Market: US ; Locale:en-US ; SourceId:DCS; ApiUid: 644e1dd7-2a7f-18fb-b8ed-ed78c3f92c2b; Description: The get profile call was successful.",
"details": {
"dcsId": "rfggrg",
"marketCode": "US",
"languageCode": "en",
"profile": {
"base": {
"username": "abc",
"firstName": "xc",
"middleName": "test",
"lastName": "123",
"shortName": "xc",
"displayName": "D",
"suffix": "T",
"prefix": "E"
}
}
}
}
fun removeKey(val, keyToRemove) = val match {
case is Array -> $ map ((v) -> removeKey(v, keyToRemove))
case is Object -> ($ - keyToRemove) mapObject ((value, key, index) -> {(key): removeKey(value,keyToRemove)})
else -> $
}
---
removeKey(data,"dcsId")