jsonic v2.16.0
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
Quick start
Install:
> npm install jsonicNode.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:Bno commas, no problem
a:1
b:Bcomments are cool
a:1
// a:2
# a:3
/* b wants
* to B
*/
b:Bstrings 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.
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?