Lines Matching +full:json +full:- +full:schema

9 - [Introduction](#introduction)
10 - [Basic structure](#basic-structure)
11 - [Improvements to the json notation](#improvements-to-the-json-notation)
12 - [General syntax sugar](#general-syntax-sugar)
13 - [Automatic arrays creation](#automatic-arrays-creation)
14 - [Named keys hierarchy](#named-keys-hierarchy)
15 - [Convenient numbers and booleans](#convenient-numbers-and-booleans)
16 - [General improvements](#general-improvements)
17 - [Comments](#comments)
18 - [Macros support](#macros-support)
19 - [Variables support](#variables-support)
20 - [Multiline strings](#multiline-strings)
21 - [Single quoted strings](#single-quoted-strings)
22 - [Emitter](#emitter)
23 - [Validation](#validation)
24 - [Performance](#performance)
25 - [Conclusion](#conclusion)
30 language called `UCL` - universal configuration language.
37 system. However, UCL is fully compatible with `JSON` format and is able to parse json files.
64 * or in JSON:
66 ```json
92 ## Improvements to the json notation.
94 There are various things that make ucl configuration more convenient for editing than strict json:
100 ```json
104 ```json
117 ```json
128 ```json
136 * Non-unique keys in an object are allowed and are automatically converted to the arrays internally:
138 ```json
145 ```json
199 + `[kKmMgG]` - standard 10 base multipliers (so `1k` is translated to 1000)
200 + `[kKmMgG]b` - 2 power multipliers (so `1kb` is translated to 1024)
201 …+ `[s|min|d|w|y]` - time multipliers, all time values are translated to float number of seconds, f…
264 * `try` (default: **false**) - if this option is `true` than UCL treats errors on loading of
265 this file as non-fatal. For example, such a file can be absent but it won't stop the parsing
266 of the top-level document.
267 * `sign` (default: **false**) - if this option is `true` UCL loads and checks the signature for
270 * `glob` (default: **false**) - if this option is `true` UCL treats the filename as GLOB pattern an…
273 * `url` (default: **true**) - allow URL includes.
274 * `path` (default: empty) - A UCL_ARRAY of directories to search for the include file.
276 * `prefix` (default false) - Put included contents inside an object, instead
278 * `key` (default: <empty string>) - Key to load contents of include into. If
280 * `target` (default: object) - Specify if the `prefix` `key` should be an
282 * `priority` (default: 0) - specify priority for the include (see below).
283 * `duplicate` (default: 'append') - specify policy of duplicates resolving:
284- `append` - default strategy, if we have new object of higher priority then it replaces old one, …
285- `merge` - if we have object or array, then new keys are merged inside, if we have a plain object…
286 - `error` - create error on duplicate keys and stop parsing
287 - `rewrite` - always rewrite an old value with new one (ignoring priorities)
296 By default, the priority of top-level object is set to zero (lowest priority). Currently,
299 of the top-level or any other object can be changed with the `.priority` macro, which has no
311 .include(priority=5) "equivalent-path.conf"
312 .include(priority=6) "highpriority-path.conf"
374 * `JSON` - canonic json notation (with spaces indented structure);
375 * `Compacted JSON` - compact json notation (without spaces or newlines);
376 * `Configuration` - nginx like notation;
377 * `YAML` - yaml inlined notation.
381schema that is used for json: [json schema v4](http://json-schema.org). UCL supports the full set …
386 I got a 19Mb file that consist of ~700 thousand lines of json (obtained via
387 http://www.json-generator.com/). Then I checked jansson library that performs json
391 jansson: parsed json in 1.3899 seconds
396 ucl: emitted json in 0.2329 seconds
397 ucl: emitted compact json in 0.1811 seconds
402 UCL compiled with optimizations (-O3) performs significantly faster:
406 ucl: emitted json in 0.1174 seconds
407 ucl: emitted compact json in 0.0991 seconds
416 JSON language and therefore can be used as a simple JSON parser. Macro logic provides an ability to…