Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

customized-json

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

customized-json

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().

  • 0.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Weekly downloads
 
Created
Source

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.

ParameterDescription
keyThe key name of the current property.
originalValueThe value of the current property as parsed by JSON.parse().
stringValueThe string value of the current property as represented in the transferred JSON string.
jsonObjectThe JSON object parsed by JSON.parse().
parentKeysAn 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()

Keywords

FAQs

Package last updated on 10 Mar 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc