Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pichsenmeister/json-transients

A simple and minimalist wrapper library to deal with JavaScript object to JSON transformations that supports removing transient fields.
https://github.com/pichsenmeister/json-transients

json json-data json-parser json-schema jsontool

Last synced: about 1 month ago
JSON representation

A simple and minimalist wrapper library to deal with JavaScript object to JSON transformations that supports removing transient fields.

Awesome Lists containing this project

README

        

# json-transients


npm version


Dependency Status


devDependency Status

A simple and minimalist wrapper library to deal with JavaScript object to JSON transformations that supports removing transient fields.

* [Installation](#installation)
* [Getting started](#getting-started)
* [License](#license)

## Installation

Install via npm

```
npm install json-transients
```

or yarn

```
yarn add json-transients
```

## Getting started

Let's take a very simple JSON object as example ...
```
const json = {
$_transient: '',
isUndefined: undefined,
str: "string",
number: 1,
bool: true,
fn: () => { }
}
```

... and transform it to remove transient fiels (properties prefixed with `$_` in this example)
```
const JsonTransients = require('json-transients')

const jst = new JsonTransients()
const result = jst.transform(json)
```

This will remove all transient fields and return a valid JSON object:

```
{
isUndefined: null,
str: "string",
number: 1,
bool: true
}
```

## Config

Each instance of `JsonTransients` takes a configuration object with following properties:

| Property | Required | Default | Description |
| ---- | ---- | ---- | ---- |
| `prefix` | no | `$_` | Prefix for transients fields that are being removed |
| `transformUndefined` | no | `true` | Sets all `undefined` properties to `null`. If set to `false` all `undefined` properties will be removed. You can also define a custom handler. |
| `transformDate` | no | `toISOString()` | Define a custom handler to transfrom `Date` objects. Sets all date properties to ISO string by default. |

### Example
```
const jst = new JsonTransients({
// use a custom prefix
prefix: 'CUSTOM_`,
// transform all undefined properties to "not_defined" string
transformUndefined: () => {
return 'not_defined'
},
// transform all dates to timestamp
transformDate: (value) => {
return value.getTime()
}
})
```

## License

This project is licensed under the MIT license, Copyright (c) 2020 David Pichsenmeister | [pichsenmeister.com](https://pichsenmeister.com). For more information see [LICENSE](LICENSE).