Функции 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")
Другие вопросы по тегам