JSON Mapify is a lightweight npm package that simplifies the process of mapping JavaScript objects to specific schemas. Whether you need to transform data into a view model or revert it back to its original structure, this package provides two essential functions: toViewModel()
and toDataModel()
.
Install the package using npm:
npm install json-mapify
Transforms the input data object to match the specified schema.
Converts the input data object back to its original structure based on the provided schema.
Both functions accept two parameters:
-
data: The object to parse to the schema.
-
map: The schema, represented as an array of objects, with the following properties:
-
name: Name of the attribute (for documentation).
-
dataPath: The source object property (supports nested paths, e.g.,
User.name
). -
viewPath: The property in the output object to assign the data to.
-
viewContent: (Optional) A function that takes in the source data and returns the view content. Data path may be omitted if no input is needed.
-
Consider the following data object:
const data = {
User: {
name: 'John Doe',
age: 30,
},
// ... other properties
};
And a schema map with a custom viewContent
function:
const schemaMap = [
{
name: 'UserName',
viewPath: 'username',
viewContent: (user) => `Hello, ${user.name}!`,
},
{
name: 'UserAge',
dataPath: 'User.age',
viewPath: 'age'
},
// ... other schema mappings
];
Using the toViewModel()
function:
const viewModel = toViewModel(data, schemaMap);
console.log(viewModel);
The resulting viewModel
will be:
{
username: 'Hello, John Doe!',
age: 30,
// ... other mapped properties
}
And using the toDataModel()
function:
const dataModel = toDataModel(viewModel, schemaMap);
console.log(dataModel);
The resulting dataModel
will be the original data object.