Documentation • Changelog
Lets you use where, limit, select, orderBy, and more in JSON data.
Install
npm install json-function
or
Usage
JsonFunction • documentation
Json-Function provides a lot of useful functions especially for your json data. It contains the methods you need too much to eliminate unnecessary code repetition.
You can use the Json-Function methods separately, but it is possible to use them all together. You can also chain it.
Chaining
import JsonFunction from "json-function"; const result = JsonFunction .where({ completed: false }) .select(["title", "completed"]) .orderBy("title", "DESC") .limit(2) .get(data);
or Basic
import JsonFunction from "json-function"; JsonFunction.where({ completed: false }); JsonFunction.select(["title", "completed"]); JsonFunction.orderBy("title", "DESC"); JsonFunction.limit(2); const result = JsonFunction.get(data);
or create a query and use it at any time.
const queryTwoIncompleteTasks = JsonFunction .where({ completed: false }) .select(["title", "completed"]) .limit(2) .getQuery();
Query usage
JsonFunction.setQuery(queryTwoIncompleteTasks).get(data); // or JsonFunction.get(data, { query: queryTwoIncompleteTasks });
Methods
Instead of an entire "class", you can use only the methods you need.
innerJoin • documentation
The "innerJoin" function is used to join two arrays.
import { innerJoin } from "json-function"; innerJoin(data, data2, "id", "userId");
schema • documentation
The "Schema" function is a great way to reconfigure your json data and make it your own.
import { schema } from "json-function"; schema(data, { book: { id: "id", title: "title" }, firstname: "user.firstname", lastname: "user.lastname" });
Use "callback" for advanced conversions.
schema(data, (sc) => ({ id: "id", fullName: sc.join("user.firstname", "user.lastname") }));
Custom separator
schema(data, (sc) => ({ id: "id", fullName: sc.join("user.firstname", "user.lastname", { separator: "_" }) }));
Use your own special function.
schema(data, (sc) => ({ id: "id", fullName: sc.custom( (firstname, lastname) => `${firstname.toUpperCase()} ${lastname.toUpperCase()}`, "user.firstname", "user.lastname" ), }))
Example
schema(data, (sc) => ({ id: "id", createdAt: sc.custom( (createdAt) => moment(createdAt).format("DD/MM/YYYY"), "createdAt", ), }))
where • documentation • samples
The "Where" function provides a comfortable method for filtering a json data.
import { where } from "json-function"; // Single // (completed === false) where(data, { completed: false }); // Multiple (or) // (completed === false || userId === 2) where(data, [{ completed: false }, { userId: 2 }]); // Deep // (address.city === "New York") where(data, { "address.city": "New York" }, { deep: true });
Use "callback" for advanced filter.
// id <= 3 where(data, (wh) => ({ id: wh.lte(3), }));
Other wh methods.
wh.lte(3) // value <= 3 wh.lt(3) // value < 3 wh.gte(3) // value >= 3 wh.gt(3) // value > 3 wh.between(3,5) // value >= 3 && value <= 5 wh.eq("3") // value == 3 wh.ne("3") // value != 3 wh.in("test") // value.includes("test") wh.nin("test") // !value.includes("test") wh.oneOf([1, 2, 3]) // [1, 2, 3].includes(value)
select • documentation
The "Select" function is a practical method where you only get the desired fields of a json data.
import { select } from "json-function"; // Single select(data, "title"); // Multiple select(data, ["title", "completed"]);
limit • documentation
"Limit" is used to get a limited number of elements from a json data. Almost javascript works like slice() but it is much easier and clearer.
import { limit } from "json-function"; // limit limit(data, 2); // limit and Start limit(data, 2, 2);
orderBy • documentation
With the "orderBy" function you can reorder the data in your json array.
import { orderBy } from "json-function"; orderBy(data, "title", "DESC"); orderBy(data, "user.firstname", "DESC", { deep: true });
search • documentation
Search over fields of objects.
import { search } from "json-function"; // Syntax: search(data: Object[], key: any, fields: string | string[], options?); // single field search(data, "key", "description"); // multiple field search(data, "key", ["user.firstName", "description"]); // case sensitive search(data, "key", "description", { caseSensitive: false });
toArray • documentation
Converts objects into meaningful sequences.
import { toArray } from "json-function"; // default key "uid" toArray(data); // custom key toArray(data, { key: "_id_" });
transform • documentation
JSON converts the snake_case keys in your data to camelCase.
import { transform } from "json-function"; transform(data);