šŸš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →
Socket
Book a DemoInstallSign in
Socket

json-loose

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

json-loose

Transforms loosely structured plain object strings into valid JSON strings

1.2.2
Source
npm
Version published
Weekly downloads
6.6K
18.41%
Maintainers
1
Weekly downloads
Ā 
Created
Source

json-loose

A utility to handle and transform loosely structured data into valid JSON strings. It offers an intuitive solution to ensure data consistency and compatibility, providing a safer alternative to using the Function constructor to obtain an object from a string.

Install

You can install this module using npm or yarn, it's only 2.93 kB │ gzip: 1.32 kB:

npm i json-loose
# or
yarn add json-loose

Alternatively, you can also include this module directly in your HTML file from CDN:

TypeURL
ESMhttps://cdn.jsdelivr.net/npm/json-loose/+esm
CJShttps://cdn.jsdelivr.net/npm/json-loose/dist/index.cjs.js
UMDhttps://cdn.jsdelivr.net/npm/json-loose/dist/index.umd.js

Usage

The jsonLoose function takes an invalid JSON string as input and returns a JSON-like string representation of the transformed data.

import jsonLoose from 'json-loose'

const invalidJSON = `
{
  name: 'Bambang Ekalaya',
  username: "@palgunadi",
  age: 30,
  isStudent: true
}
`
const data = jsonLoose(invalidJSON)
// now you can `JSON.parse(data)`

console.log(data)

Yields:

{
  "name": "Bambang Ekalaya",
  "username": "@palgunadi",
  "age": 30,
  "isStudent": true
}

You can also specify an optional context object to transform Identifier values:

import jsonLoose from 'json-loose'

const invalidJSON = `
[
  "foo",
  true,
  [1, 2, wife],
  {
    [n]: 'Bambang Ekalaya',
    username: "@palgunadi",
    age: 30,
    address: [{city:city}, [country]],
    skills: skills,
    isStudent: true,
    relation: {
      wife: wife,
      guru: guru,
      [bar]: "qux"
    },
  },
],
`

const context = {
  n: 'name',
  skills: 'Archery',
  city: 'Nishada',
  country: 'Aravalli',
  wife: 'Anggraini',
  guru: 'Drona'
}

const data = jsonLoose(invalidJSON, context)
// now you can `JSON.parse(data)`

console.log(data)

Yields:

[
  "foo",
  true,
  [1, 2, "Anggraini"],
  {
    "name": "Bambang Ekalaya",
    "username": "@palgunadi",
    "age": 30,
    "address": [{ "city": "Nishada" }, ["Aravalli"]],
    "skills": "Archery",
    "isStudent": true,
    "relation": { "wife": "Anggraini", "guru": "Drona", "bar": "qux" }
  }
]
  • attributes-parser – A utility for parsing and tokenizing attributes string into meaningful tokens and key-value pairs.
  • js-tokens – A JavaScript tokenizer that never fails.

Benchmarks

  name                hz     min      max    mean     p75     p99    p995    p999      rme  samples
· json-loose  109,620.27  0.0077   0.7080  0.0091  0.0083  0.0168  0.0363  0.2052   ±1.19%    54811   fastest
· js-tokens    54,156.77  0.0116  24.3425  0.0185  0.0122  0.0247  0.0643  1.1352  ±15.68%    27267

Contributing

We šŸ’›Ā  issues.

When committing, please conform to the semantic-release commit standards. Please install commitizen and the adapter globally, if you have not already.

npm i -g commitizen cz-conventional-changelog

Now you can use git cz or just cz instead of git commit when committing. You can also use git-cz, which is an alias for cz.

git add . && git cz

License

GitHub

A project by Stilearning Ā© 2023.

Keywords

json

FAQs

Package last updated on 20 Oct 2023

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