Fast precopmiled json stringify. Convenient API, very simple to use. Like JSON.stringify, but optimized for objects that are likely to share a common schema.
Use for logging, RPC, or other use cases where the object schema does not vary.
const json_comp = require('json-exec').json_comp;
const json_exec = require('json-exec').json_exec;
const coder = json_comp({ name: 'String', age: 123 });
json_exec(coder, { name: 'Mickey Mouse', age: 91, color: 'black' });
// => '{"name":"Mickey Mouse","age":91}'
json_exec(coder, { name: 'Minnie Mouse' });
// => '{"name":"Minnie Mouse","age":null}'
For example, to speed up the logging of fixed-pattern objects:
// auto-initialize the logline json encoder
var loglineCoder = loglineCoder || json_comp(logObject);
// log the json string
var logline = json_exec(loglineCoder, logObject);
logger.log(logline);
Build a json encoder to stringify the properties of the template. The template is a duck-typing description of the properties and types to encode from data objects; in particular, the template may be an instance of a data object.
The data object properties should be of the same type as the corresponding template
properties. A missing data property will be encoded as null
(instead of being skipped as
by JSON.stringify).
Use the encoder to stringify the data object according to the template. Missing values are
not skipped, they're stringified as null
. Properties that were not present in the template
are omitted.
- 0.2.1 - more tests, tuning
- 0.2.0 - fix nested objects, fix null encoding, fix undefined object handling
- 0.1.3 - bug fixes, tuning
- 0.1.0 - initial version with
json_comp
andjson_exec
- allow for constant properties that will not be re-stringified each time
- build a template-specific stringifier function instead of walking the template