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-mapifyTransforms 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.