Schema
The "Schema" function is a great way to reconfigure your json data and make it your own.
Github repository for your stars.
Usage
Install
$ npm install json-function
Import
import { schema } from 'json-function';
Usage
Example Data
const data = [
{
id: 0,
user: {
firstname: "John",
lastname: "Doe"
},
title: "Book Name"
},
{
id: 1,
user: {
firstname: "Johnny",
lastname: "Doe"
},
title: "Book Name 2"
}
];
Syntax
schema(data, {
book: {
id: "id",
title: "title"
},
firstname: "user.firstname",
lastname: "user.lastname"
});
Output
[
{
firstname: "John",
lastname: "Doe",
book: {
id: 0,
title: "Book Name"
}
},
{
firstname: "Johnny",
lastname: "Doe",
book: {
id: 1,
title: "Book Name 2"
}
}
];
Apart from this wonderful method, there are also some advanced uses.
Schema has a calback that hosts useful tools.
Example Data
const data = [
{
id: 0,
user: {
firstname: "John",
lastname: "Doe"
},
title: "Book Name"
},
{
id: 1,
user: {
firstname: "Johnny",
lastname: "Doe"
},
title: "Book Name 2"
}
];
Syntax
join()
The default separator is a space.
schema(data, (sc) => ({
id: 'id',
fullName: sc.join('user.firstname', 'user.lastname')
}));
Output
[
{
id: 0,
fullName: "John Doe"
},
{
id: 1,
fullName: "Johnny Doe"
}
];
To use a custom separator.
schema(data, (sc) => ({
id: 'id',
fullName: sc.join('user.firstname', 'user.lastname', { separator: '_' })
}));
Output
[
{
id: 0,
fullName: "John_Doe"
},
{
id: 1,
fullName: "Johnny_Doe"
}
];
custom()
Example Data
const data = [
{
id: 0,
createdAt: "2019-03-07T19:22:36+00:00",
user: {
firstname: "Aykut",
lastname: "Kardaş"
}
},
{
id: 1,
createdAt: "2019-03-02T19:22:36+00:00",
user: {
firstname: "John",
lastname: "Doe"
}
}
];
Usage
schema(data, sc => ({
id: "id",
fullName: sc.custom(
(firstname, lastname) => `${firstname.toUpperCase()} ${lastname.toUpperCase()}`,
"user.firstname",
"user.lastname"
),
createdAt: sc.custom(
createdAt => moment(createdAt).format("MM/DD/YYYY"),
"createdAt"
),
idIncrement: sc.custom(id => id + 1, "id")
}));
Output
[
{
id: 0,
fullName: "AYKUT KARDAŞ",
createdAt: "03/07/2019",
idIncrement: 1
},
{
id: 1,
fullName: "JOHN DOE",
createdAt: "03/02/2019",
idIncrement: 2
}
]