customized-json

0.1.0 • Public • Published

customized-json

npm version Build Status Coverage Status JavaScript Style Guide

A JSON parser that allows users to overwrite default parsing behavior by customized rules defined in a user-defined function that provides more useful parameters than the reviver function of JSON.parse().

Setup

Install customized-json by running the following command:

$ npm install customized-json

Parse a JSON String

Run customized-json as shown in the following example to parse a JSON string:

const customizedJSON = require('customized-json')

const jsonString = `
{
  "name": "Carl",
  "pets": [
    {
      "name": "Charlie",
      "type": "dog",
      "age": 5,
      "isChildFriendly": true
    },
    {
      "name": "Lucy",
      "type": "cat",
      "age": 7,
      "isChildFriendly": false
      }
  ]
}`

const keyPathToLuciesAge = ['pets', 1, 'age']

const celebrateLuciesBirthday = (key, originalValue, stringValue, jsonObject, parentKeys) => {
  if (parentKeys.length === keyPathToLuciesAge.length &&
    parentKeys.every((key, index) => key === keyPathToLuciesAge[index])) {
    return originalValue + 1
  }
  return originalValue
}

const parsedJSON = customizedJSON.parse(jsonString, celebrateLuciesBirthday)

console.log(`Lucie's new age: ${parsedJSON.pets[1].age}`) // Lucie's new age: 8

As can be seen above, the customization function must return a value which represents the new value and takes five different parameters that can be used for determining how to finally assign a value to the current property. Each parameter is documented in the table below.

Parameter Description
key The key name of the current property.
originalValue The value of the current property as parsed by JSON.parse().
stringValue The string value of the current property as represented in the transferred JSON string.
jsonObject The JSON object parsed by JSON.parse().
parentKeys An array representing the key path to the current property. Keys of objects are represented by string values whereas array indices are of type number.

If no function or a function with less than three parameters will be transmitted to customizedJSON.parse(), the result of JSON.parse() will be returned to avoid the overhead caused by determining parameters for the customization function.

Things To Do

This module is still under construction. Thus, incompatible changes are possible whenever they appear reasonable. A stable version 1.0.0 is expected to be released later in 2021 and will contain the following improvements:

  • A customizedJSON.stringify() function for customizing JSON.stringify()
  • Examples to show how to use customizedJSON.parse() and customizedJSON.stringify()

Package Sidebar

Install

npm i customized-json

Weekly Downloads

2

Version

0.1.0

License

MIT

Unpacked Size

11.3 kB

Total Files

8

Last publish

Collaborators

  • sebastiang77