1.2.2 • Published 2 years ago
@stein197/json-util v1.2.2
Tiny library that provides utility functions to work with JSON structures
This tiny package provides common functions to work with JSON structures
Installation
For node:
npm i @stein197/equals
then
import * as jsonUtil from "@stein197/json-util";
For browser:
<script src="jsonUtil.min.js"></script>
The global scope will contain jsonUtil
variable containing all functions inside.
Usage
The next example shows all available functions. More detailed description for the API rests in corresponding docblocks.
jsonUtil.equal({a: 1}, {a: 1}); // true
// Type checking
jsonUtil.isArray([]); // true
jsonUtil.isObject({}); // true
jsonUtil.isObject([]); // false
// Content checking
jsonUtil.isEmpty({}); // true
jsonUtil.isEmpty([]); // true
jsonUtil.isEmpty(""); // true
// Deep cloning
jsonUtil.clone([1, 2, 3]); // [1, 2, 3]
jsonUtil.clone({}) == {}; // false
The noticeable thing is equal()
function that compares objects strictly and partially at the same time (without overhead). In addition to booleans, it also returns -1
and 1
if one object is super-/sub-set of another one respectively. The following example shows this difference:
jsonUtil.equal({}, {}); // true
jsonUtil.equal({a: 1}, {}); // 1, because the first object is a superset of the second one
jsonUtil.equal({}, {a: 1}); // -1, because the first object is a subset of the second one
jsonUtil.equal({a: 1, b: {c: 3}}, {a: 1}); // 1, it could include nested objects
jsonUtil.equal({a: 1, b: {c: 3}}, {b: {c: null}}); // false, fails here
If you mind a function that does "a lot", then use two distinct functions:
jsonUtil.strictlyEqual({a: 1}, {a: 1}); // true
jsonUtil.strictlyEqual({a: 1}, {}); // false
jsonUtil.partlyEqual({a: 1}, {a: 1}); // true
jsonUtil.partlyEqual({a: 1}, {}); // true, the second object is a subset of the first one
jsonUtil.partlyEqual({}, {a: 1}); // false, the first object is not a superset of the second one
NPM scripts
clean
cleans working directory from compiled filescompile
compiles source codetest
runs unit testsbuild
builds the entire project (including tests). Outputsindex.js
for Node.js environment andjsonUtils.min.js
for browser.