Base64Decode@1
Node Base64Decode@1
converts Base64 encoded strings back to their original string values. It decodes Base64 strings using UTF-8 encoding and is essential for processing encoded data from APIs, configuration files, or secure storage.
Adapter Prerequisites
- General availability: All adapters support this node type.
Node Configuration
For fields path
, targetPath
, targetValueWriteMode
, and targetValueKind
, see Overview.
transformations:
- type: Base64Decode@1
path: $.users[*] # Path to objects containing encoded data
sourcePath: $.encodedPassword # Path to Base64 encoded value
targetPath: $.password # Path where decoded value will be stored
Parameters
Required Parameters
Parameter | Type | Description |
---|---|---|
path | string | JSONPath to objects containing the Base64 encoded data |
sourcePath | string | Relative path to the Base64 encoded value within each object |
targetPath | string | Relative path where the decoded value will be stored |
Decoding Process
The node performs Base64 decoding through these steps:
- Object Selection: Uses
path
to select objects containing encoded data - Value Retrieval: Extracts the Base64 encoded string from
sourcePath
- Base64 Decoding: Converts the Base64 string to a byte array
- UTF-8 Conversion: Converts the byte array back to a UTF-8 string
- Result Storage: Stores the decoded string at
targetPath
Null Value Handling
- Null Preservation: Null values are preserved without decoding
- Empty Strings: Empty strings are decoded (result in empty decoded string)
- Invalid Base64: Invalid Base64 strings throw a FormatException
Examples
Example 1: Decode User Credentials
Decode Base64 encoded passwords:
transformations:
- type: Base64Decode@1
path: $.users[*]
sourcePath: $.encodedPassword
targetPath: $.password
Input:
{
"users": [
{ "id": "user1", "encodedPassword": "cGFzc3dvcmQxMjM=" },
{ "id": "user2", "encodedPassword": "bXlTZWNyZXQ0NTY=" }
]
}
Output:
{
"users": [
{ "id": "user1", "encodedPassword": "cGFzc3dvcmQxMjM=", "password": "password123" },
{ "id": "user2", "encodedPassword": "bXlTZWNyZXQ0NTY=", "password": "mySecret456" }
]
}
Example 2: Decode API Keys
Extract original API keys from encoded format:
transformations:
- type: Base64Decode@1
path: $.services[*]
sourcePath: $.encodedApiKey
targetPath: $.apiKey
Input:
{
"services": [
{ "name": "API1", "encodedApiKey": "c2VjcmV0LWtleS0xMjM=" },
{ "name": "API2", "encodedApiKey": "YW5vdGhlci1zZWNyZXQ=" }
]
}
Output:
{
"services": [
{ "name": "API1", "encodedApiKey": "c2VjcmV0LWtleS0xMjM=", "apiKey": "secret-key-123" },
{ "name": "API2", "encodedApiKey": "YW5vdGhlci1zZWNyZXQ=", "apiKey": "another-secret" }
]
}
Example 3: Decode Configuration Values
Decode configuration parameters from secure storage:
transformations:
- type: Base64Decode@1
path: $.configuration.secure[*]
sourcePath: $.encodedValue
targetPath: $.value
Input:
{
"configuration": {
"secure": [
{ "key": "db_password", "encodedValue": "ZGF0YWJhc2VfcGFzcw==" },
{ "key": "api_token", "encodedValue": "dG9rZW5fMTIzNDU2" }
]
}
}
Output:
{
"configuration": {
"secure": [
{ "key": "db_password", "encodedValue": "ZGF0YWJhc2VfcGFzcw==", "value": "database_pass" },
{ "key": "api_token", "encodedValue": "dG9rZW5fMTIzNDU2", "value": "token_123456" }
]
}
}
Example 4: Decode Data URI Content
Extract content from data URIs:
transformations:
- type: Base64Decode@1
path: $.files[*]
sourcePath: $.base64Content
targetPath: $.textContent
Input:
{
"files": [
{ "name": "readme.txt", "base64Content": "SGVsbG8gV29ybGQh" },
{ "name": "config.json", "base64Content": "eyJzZXR0aW5nIjogInZhbHVlIn0=" }
]
}
Output:
{
"files": [
{ "name": "readme.txt", "base64Content": "SGVsbG8gV29ybGQh", "textContent": "Hello World!" },
{ "name": "config.json", "base64Content": "eyJzZXR0aW5nIjogInZhbHVlIn0=", "textContent": "{\"setting\": \"value\"}" }
]
}
Example 5: Handle Null Values
Demonstrate null value handling:
transformations:
- type: Base64Decode@1
path: $.items[*]
sourcePath: $.encodedData
targetPath: $.data
Input:
{
"items": [
{ "id": 1, "encodedData": "aGVsbG8=" },
{ "id": 2, "encodedData": null },
{ "id": 3, "encodedData": "d29ybGQ=" }
]
}
Output:
{
"items": [
{ "id": 1, "encodedData": "aGVsbG8=", "data": "hello" },
{ "id": 2, "encodedData": null, "data": null },
{ "id": 3, "encodedData": "d29ybGQ=", "data": "world" }
]
}
Example 6: Decode Multiple Fields
Decode multiple Base64 fields in the same object:
transformations:
- type: Base64Decode@1
path: $.credentials[*]
sourcePath: $.encodedUsername
targetPath: $.username
- type: Base64Decode@1
path: $.credentials[*]
sourcePath: $.encodedPassword
targetPath: $.password
Input:
{
"credentials": [
{
"service": "database",
"encodedUsername": "YWRtaW4=",
"encodedPassword": "cGFzc3dvcmQ="
}
]
}
Output:
{
"credentials": [
{
"service": "database",
"encodedUsername": "YWRtaW4=",
"encodedPassword": "cGFzc3dvcmQ=",
"username": "admin",
"password": "password"
}
]
}
Use Cases
- Credential Decoding: Decode encoded passwords, API keys, or tokens from configuration
- Data Processing: Extract original content from Base64 encoded API responses
- File Content Extraction: Decode file contents received in Base64 format
- Configuration Management: Retrieve original values from obfuscated configuration data
- Data URI Processing: Extract content from data URIs for further processing
- Secure Storage: Decode values retrieved from secure storage systems
- API Integration: Process Base64 encoded data from external APIs
Error Handling
The node will throw errors when:
- The input data context is null
- A Base64 string contains invalid characters (FormatException)
- JSONPath expressions are invalid
Behavior Notes
- UTF-8 Encoding: All decoded strings use UTF-8 character encoding
- Null Safety: Null values are preserved without causing errors
- String Conversion: Values are converted to strings before decoding
- Error Logging: Invalid Base64 strings are logged with path information
- Memory Efficient: Processing is done per object, not loading all data at once
Security Considerations
- Not Encryption: Base64 is encoding, not encryption - it provides no security
- Sensitive Data: Be cautious when logging decoded values containing sensitive information
- Validation: Consider validating decoded values for expected formats or patterns
Related Nodes
- Base64Encode@1: Encode strings to Base64 format
- ConvertDataType@1: Convert between different data types
- FormatString@1: Format decoded strings for display