Skip to content

mrsteele/json-truncate

Repository files navigation

json-truncate

A way to truncate a json object. Useful for circular referenced objects.

Status

npm Main Dependency Status devDependency Status js-standard-style semantic-release npm Greenkeeper badge

About

If you need to write data to a file or output an object to an api endpoint that has circular references I recommend you give json-truncate a try.

By removing deeply nested data to maintain simple copies of the circular references you can keep most of the data you might be interested in.

Install

npm install json-truncate --save

Usage

Below are examples of how to use json-truncate

Including

You can include with regular node require:

JSON.truncate = require('json-truncate')

Usage

Figure 1.0 - A basic example with default options.

JSON.truncate(SomeDeepObject)

Figure 1.1 - An example of setting the maxDepth property.

JSON.truncate(SomeDeepObject, 5)

Figure 1.2 - An example of all configurable options.

console.log(JSON.truncate({
  data: 'foo',
  level1: {
    data: 'bar',
    level2: {
      level3: {}
    }
  }
}, {
  maxDepth: 2,
  replace: '[Truncated]'
}))
/**
 * Output:
{
  "data": "foo",
  "level1": {
    "data": "bar",
    "level2": "[Truncated]"
  }
}
 **/

Configuration

By default, there are two configurable variables to keep in mind when using json-truncate:

  1. maxDepth (Number) = 10
  2. replace (Any) = undefined

If you would you can configure these either individually with each request, or globally with the configuration function. The following example mimics figure 1.2 above.

JSON.truncate.configure({
  maxDepth: 2,
  replace: '[Truncated]'
})

Arguments

  • obj - The Object that will be truncated.
  • options - (optional) An option object to customize the behavior of the utility. Defaults to {}.

Current Option Properties

Option Description
maxDepth The default maxDepth to use for nested and deep properties on an object. Defaults to 10
:-- :--
replace A string value that is used to replace all truncated values. If this value is not a string then all truncated values will be replaced with undefined

Licence

MIT