Awesome
JSON AST parser
Install
> npm install json-to-ast
Usage
const parse = require('json-to-ast');
const settings = {
// Appends location information. Default is <true>
loc: true,
// Appends source information to node’s location. Default is <null>
source: 'data.json'
};
parse('{"a": 1}', settings);
Output
{
type: 'Object',
children: [
{
type: 'Property',
key: {
type: 'Identifier',
value: 'a',
raw: '"a"',
loc: {
start: { line: 1, column: 2, offset: 1 },
end: { line: 1, column: 5, offset: 4 },
source: 'data.json'
}
},
value: {
type: 'Literal',
value: 1,
raw: '1',
loc: {
start: { line: 1, column: 7, offset: 6 },
end: { line: 1, column: 8, offset: 7 },
source: 'data.json'
}
},
loc: {
start: { line: 1, column: 2, offset: 1 },
end: { line: 1, column: 8, offset: 7 },
source: 'data.json'
}
}
],
loc: {
start: { line: 1, column: 1, offset: 0 },
end: { line: 1, column: 9, offset: 8 },
source: 'data.json'
}
}
Node types
Object:
{
type: 'Object',
children: <Property>[],
loc?: Object
}
Property:
{
type: 'Property',
key: <Identifier>,
value: Object | Array | <Literal>,
loc?: Object
}
Identifier:
{
type: 'Identifier',
value: string,
raw: string,
loc?: Object
}
Array:
{
type: 'Array',
children: (Object | Array | <Literal>)[],
loc?: Object
}
Literal:
{
type: 'Literal',
value: string | number | boolean | null,
raw: string,
loc?: Object
}
AST explorer
Try it online on astexplorer.net
License
MIT