This n8n template provides a simple yet powerful utility for validating if a given string input is a valid JSON format. You can use this to pre-validate data received from external sources, ensure data integrity before further processing, or provide immediate feedback to users submitting JSON strings.
🔧 How it works
-
Webhook: This node acts as the entry point for the workflow, listening for incoming POST requests. It expects a JSON body with a single property:
- jsonString: The string that you want to validate as JSON.
-
Code (JSON Validator): This node contains custom JavaScript code that attempts to parse the jsonString provided in the webhook body.
- If the jsonString can be successfully parsed, it means it's valid JSON, and the node returns an item with valid: true.
- If parsing fails, it catches the error and returns an item with valid: false and the specific error message.
- This logic is applied to each item passed through the node, ensuring all inputs are validated.
-
Respond to Webhook: This node sends the validation result (either valid: true or valid: false with an error message) back to the service that initiated the webhook request.
👤 Who is it for?
This workflow is ideal for:
- Developers & Integrators: Pre-validate JSON payloads from external systems (APIs, webhooks) before processing them in your workflows, preventing errors.
- Data Engineers: Ensure the integrity of JSON data before storing it in databases or data lakes.
- API Builders: Offer a dedicated endpoint for clients to test their JSON strings for validity.
- Customer Support Teams: Quickly check user-provided JSON configurations for errors.
- Anyone handling JSON data: A quick and easy way to programmatically check JSON string correctness without writing custom code in every application.
📑 Data Structure
When you trigger the webhook, send a POST request with a JSON body structured as follows:
{
"jsonString": "{\"name\": \"n8n\", \"type\": \"workflow\"}"
}
Example of an invalid JSON string:
{
"jsonString": "{name: \"n8n\"}" // Missing quotes around 'name'
}
The workflow will return a JSON response indicating validity:
For a valid JSON string:
{
"valid": true
}
For an invalid JSON string:
{
"valid": false,
"error": "Unexpected token 'n', \"{name: \"n8n\"}\" is not valid JSON"
}
⚙️ Setup Instructions
-
Import Workflow:
- In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.
-
Configure Webhook Path:
- Double-click the Webhook node.
- In the 'Path' field, set a unique and descriptive path (e.g., /validate-json).
-
Activate Workflow:
- Save and activate the workflow.
📝 Tips
This JSON validator workflow is a solid starting point. Consider these enhancements:
-
Enhanced Error Feedback:
- Upgrade: Add a Set node after the Code node to format the error message into a more user-friendly string before responding.
- Leverage: Make it easier for the caller to understand the issue.
-
Logging Invalid Inputs:
- Upgrade: After the Code node, add an IF node to check if valid is false. If so, branch to a node that logs the invalid jsonString and error to a Google Sheet, database, or a logging service.
- Leverage: Track common invalid inputs for debugging or improvement.
-
Transforming Valid JSON:
- Upgrade: If the JSON is valid, you could add another Function node to parse the jsonString and then operate on the parsed JSON data directly within the workflow.
- Leverage: Use this validator as the first step in a larger workflow that processes JSON data.
-
Asynchronous Validation:
- Upgrade: For very large JSON strings or high-volume requests, consider using a separate queueing mechanism (e.g., RabbitMQ, SQS) and an asynchronous response pattern.
- Leverage: Prevent webhook timeouts and improve system responsiveness.