New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@jsonic/jsonic-next

Package Overview
Dependencies
Maintainers
0
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jsonic/jsonic-next

A dynamic JSON parser that isn't strict and can be customized.

2.14.0
latest
Source
npm
Version published
Maintainers
0
Created
Source

jsonic

NOTE: PREVIEW VERSION OF NEXT RELEASE

A JSON parser for JavaScript that isn't strict. Also, it's very very extensible.

a:1,foo:bar{"a": 1, "foo": "bar"}

Site | Docs | FP Guide | Contributing | Wiki | Code of Conduct | Twitter | Chat

npm version dependencies Status

Quick start

Install:

> npm install jsonic

Node.js:

const Jsonic = require('jsonic')
console.log(Jsonic('a:b'))  // prints {a:'b'}

TypeScript:

import { Jsonic } from 'jsonic'
console.log(Jsonic('a:b'))  // prints {a:'b'}

Browser:

<script src="jsonic.min.js"></script>
<script>
console.log(Jsonic('a:b'))  // prints {a:'b'}
</script>

(Although in the real world you'll probably be packaging jsonic as a dependency with webpack or similar.)

What can jsonic do?

All of the examples below parse beautifully to {"a": 1, "b": "B"}.

short and sweet

a:1,b:B

no commas, no problem

a:1
b:B

comments are cool

a:1
// a:2
# a:3

/* b wants 
 * to B
 */
b:B

strings and things

{ "a": 100e-2, '\u0062':`\x42`, }

The syntax of jsonic is just easy-going JSON:

  • simple no-quotes-needed property names: {a:1}{"a": 1}
  • implicit top level (optional): a:1,b:2{"a": 1, "b": 2}, a,b["a", "b"]
  • graceful trailing commas: a:1,b:2,{"a": 1, "b": 2}, a,b,["a", "b"]
  • all the number formats: 1e1 === 0xa === 0o12 === 0b1010

But that is not all! Oh, no. That is not all...

This:

# Merge, baby, merge!
cat: { hat: true }
cat: { fish: null }
cat: who: ['sally', 'me']
  
# Who needs quotes anyway?
holds up: [
  cup and a cake,

  `TWO books!
   the fish!`,

  '''
  ship!
  dish!
  ball!
  '''
  ]
}

parses into this:

{
  "cat": {
    "hat": true,
    "fish": null,
    "who": ["sally","me"]
  },
  
  "holds up": [
    "cup and a cake",
    "TWO books!\n   the fish!",
    "ship!\ndish!\nball!"
  ]
}

Meaning you also get:

  • quotes can be single or double ': 'a',"b"['a', 'b']
  • quotes are optional, even with spaces: {a: cup cake }{"a": "cup cake"}
  • object merging: a:{b:1},a:{c:2}{"a": {"b": 1, "c": 2}}
  • object construction: a:b:1,a:c:2{"a": {"b": 1, "c": 2}}
  • multi-line strings:
`a
b` 

"a\nb"

  • indent-adjusted strings:
  '''
  a
  b
  '''

"a\nb"

And we haven't even begun to talk about all the fun stuff you can do with options and plugins, including support for multiple files, CSV (or TSV), and dynamic content.

Table of Contents

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

a

Usage

Breaking Changes

  • unterminated strings?

Keywords

pattern

FAQs

Package last updated on 07 Nov 2024

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