Python JavaScript
Data Validation (JavaScript/TypeScript)¶
GraphBit provides JSON schema validation for ensuring data quality in AI workflows.
Overview¶
The validation system helps you: - Validate JSON data against schemas - Ensure data quality before processing - Catch errors early in the pipeline - Enforce data contracts
Basic Usage¶
Validate JSON¶
import { validateJson } from '@infinitibit_gmbh/graphbit';
const data = JSON.stringify({
name: 'John Doe',
age: 30,
email: 'john@example.com'
});
const schema = JSON.stringify({
type: 'object',
properties: {
name: { type: 'string' },
age: { type: 'number' },
email: { type: 'string', format: 'email' }
},
required: ['name', 'email']
});
const result = validateJson(data, schema);
if (result.valid) {
console.log('Data is valid!');
} else {
console.log('Validation errors:', result.errors);
}
Validation Result¶
interface ValidationResult {
valid: boolean; // Whether validation passed
errors: string[]; // Array of error messages
}
Common Schemas¶
User Object Schema¶
const userSchema = JSON.stringify({
type: 'object',
properties: {
id: { type: 'string' },
name: { type: 'string' },
email: { type: 'string', format: 'email' },
age: { type: 'number', minimum: 0, maximum: 150 }
},
required: ['id', 'name', 'email']
});
Array Schema¶
const arraySchema = JSON.stringify({
type: 'array',
items: {
type: 'object',
properties: {
title: { type: 'string' },
completed: { type: 'boolean' }
},
required: ['title', 'completed']
},
minItems: 1
});
Validation in Workflows¶
import { validateJson } from '@infinitibit_gmbh/graphbit';
function processUserData(jsonData: string) {
const schema = JSON.stringify({
type: 'object',
properties: {
name: { type: 'string', minLength: 1 },
email: { type: 'string', format: 'email' },
age: { type: 'number', minimum: 18 }
},
required: ['name', 'email']
});
const result = validateJson(jsonData, schema);
if (!result.valid) {
throw new Error(`Validation failed: ${result.errors.join(', ')}`);
}
// Process valid data
const data = JSON.parse(jsonData);
console.log(`Processing user: ${data.name}`);
}
Complete Example¶
import { validateJson } from '@infinitibit_gmbh/graphbit';
function validateAndProcess() {
// Define schema
const schema = JSON.stringify({
type: 'object',
properties: {
products: {
type: 'array',
items: {
type: 'object',
properties: {
id: { type: 'string' },
name: { type: 'string' },
price: { type: 'number', minimum: 0 }
},
required: ['id', 'name', 'price']
}
}
},
required: ['products']
});
// Data to validate
const data = JSON.stringify({
products: [
{ id: '1', name: 'Widget', price: 9.99 },
{ id: '2', name: 'Gadget', price: 19.99 }
]
});
// Validate
const result = validateJson(data, schema);
if (result.valid) {
console.log('✓ Data is valid');
const parsed = JSON.parse(data);
console.log(` Products: ${parsed.products.length}`);
} else {
console.log('✗ Validation failed:');
result.errors.forEach(error => console.log(` - ${error}`));
}
}
validateAndProcess();