UNPKG

jsoneditor

Version:

A web-based tool to view, edit, format, and validate JSON

154 lines (142 loc) 3.47 kB
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"> <title>JSONEditor | onValidationError</title> <link href="../dist/jsoneditor.css" rel="stylesheet" type="text/css"> <script src="../dist/jsoneditor.js"></script> <style type="text/css"> body { width: 600px; font: 11pt sans-serif; } #jsoneditor { width: 100%; height: 500px; } #onValidationOutput { margin: 5px; } /* custom bold styling for non-default JSON schema values */ .jsoneditor-is-not-default { font-weight: bold; } </style> </head> <body> <h1>JSON schema validation</h1> <p> This example demonstrates onValidationError callback. </p> <div id="jsoneditor"></div> <div id="onValidationOutput"></div> <script> var schema = { "title": "Employee", "description": "Object containing employee details", "type": "object", "properties": { "firstName": { "title": "First Name", "description": "The given name.", "examples": [ "John" ], "type": "string" }, "lastName": { "title": "Last Name", "description": "The family name.", "examples": [ "Smith" ], "type": "string" }, "gender": { "title": "Gender", "enum": ["male", "female"] }, "availableToHire": { "type": "boolean", "default": false }, "age": { "description": "Age in years", "type": "integer", "minimum": 0, "examples": [28, 32] }, "job": { "$ref": "job" } }, "required": ["firstName", "lastName"] }; var job = { "title": "Job description", "type": "object", "required": ["address"], "properties": { "company": { "type": "string", "examples": [ "ACME", "Dexter Industries" ] }, "role": { "description": "Job title.", "type": "string", "examples": [ "Human Resources Coordinator", "Software Developer" ], "default": "Software Developer" }, "address": { "type": "string" }, "salary": { "type": "number", "minimum": 120, "examples": [100, 110, 120] } } }; var json = { firstName: 'John', lastName: 'Doe', gender: null, age: "28", availableToHire: true, job: { company: 'freelance', role: 'developer', salary: 100 } }; var options = { schema: schema, schemaRefs: {"job": job}, mode: 'code', modes: ['code', 'text', 'tree', 'preview'], onValidationError: function(errors) { console.error('onValidationError', errors); const outputEL = document.getElementById('onValidationOutput') outputEL.innerHTML = '<code>onValidationError</code> was called with ' + errors.length + ' error' + (errors.length > 1 ? 's' : '') + ' <br> ' + 'open the browser console to see the error objects'; }, onValidate: function (json) { var errors = []; if(!isNaN(json.age) && json.age < 30) { errors.push({ path: ['age'], message: 'Member age must be 30 or higher' }); } return errors; } }; // create the editor var container = document.getElementById('jsoneditor'); var editor = new JSONEditor(container, options, json); </script> </body> </html>