UNPKG

jsoneditor

Version:

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

74 lines (64 loc) 1.81 kB
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"> <title>JSONEditor | Dynamic Auto Complete</title> <link href="../dist/jsoneditor.css" rel="stylesheet" type="text/css"> <script src="../dist/jsoneditor.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script> <style type="text/css"> #jsoneditor { width: 500px; height: 500px; } p { width: 500px; font-family: "DejaVu Sans", sans-serif; } </style> </head> <body> <p> This example demonstrates how to autocomplete works, options available are dynamics and consist in all the strings found in the json </p> <div id="jsoneditor"></div> <script> // create the editor const container = document.getElementById('jsoneditor') const options = { autocomplete: { applyTo:['value'], filter: 'contain', trigger: 'focus', getOptions: function (text, path, input, editor) { return new Promise(function (resolve, reject) { const options = extractUniqueWords(editor.get()) if (options.length > 0) { resolve(options) } else { reject() } }) } } } // helper function to extract all unique words in the keys and values of a JSON object function extractUniqueWords (json) { return _.uniq(_.flatMapDeep(json, function (value, key) { return _.isObject(value) ? [key] : [key, String(value)] })) } const json = { 'array': [{'field1':'v1', 'field2':'v2'}, 2, 3], 'boolean': true, 'null': null, 'number': 123, 'object': {'a': 'b', 'c': 'd'}, 'string': 'Hello World' } const editor = new JSONEditor(container, options, json) </script> </body> </html>