Introduction to jsonc-parser
The jsonc-parser is a powerful npm module for parsing JSON with comments. It addresses the need for handling JSON files that include comments, which is not supported by the standard JSON parser.
Getting Started
To install the jsonc-parser, use the following command:
npm install jsonc-parser
Using jsonc-parser
Here are some of the useful APIs provided by jsonc-parser:
parse
This function parses a JSONC input string and returns a JavaScript object.
const { parse } = require('jsonc-parser'); const content = ` {
// This is a comment
"name": "John Doe",
"age": 25
}`; const data = parse(content); console.log(data); // Output: { name: 'John Doe', age: 25 }
parseTree
This function parses a JSONC input string and returns a JSON tree.
const { parseTree } = require('jsonc-parser'); const content = ` {
// This is a comment
"name": "John Doe",
"age": 25
}`; const tree = parseTree(content); console.log(tree); // Output: JSON tree structure
findNodeAtLocation
This function finds a node within a JSON tree at the given location.
const { parseTree, findNodeAtLocation } = require('jsonc-parser'); const content = ` {
// This is a comment
"name": "John Doe",
"age": 25
}`; const tree = parseTree(content); const nameNode = findNodeAtLocation(tree, ['name']); console.log(nameNode); // Output: Node corresponding to 'name'
modify
This function modifies a JSONC string with changes and returns the modified string.
const { modify } = require('jsonc-parser'); const content = ` {
// This is a comment
"name": "John Doe",
"age": 25
}`; const edits = modify(content, ['name'], 'Jane Doe', {formattingOptions: {tabSize: 2, insertSpaces: true}}); const newContent = applyEdits(content, edits); console.log(newContent); // Output: Modified JSONC string
applyEdits
This function applies the list of edits to the JSONC string and returns the new string.
const { applyEdits } = require('jsonc-parser'); const edits = [ /* array of text edits */ ]; const newContent = applyEdits(originalContent, edits); console.log(newContent); // Output: JSONC string with applied edits
App Example Using jsonc-parser
Here is a simple Node.js application that makes use of various jsonc-parser APIs:
const fs = require('fs'); const { parse, parseTree, findNodeAtLocation, modify, applyEdits } = require('jsonc-parser');
const filePath = './data.jsonc';
fs.readFile(filePath, 'utf8', (err, content) => {
if (err) {
console.error(err);
return;
}
// Parsing the JSONC content
const data = parse(content);
console.log('Parsed Data:', data);
// Finding a node
const tree = parseTree(content);
const ageNode = findNodeAtLocation(tree, ['age']);
console.log('Age Node:', ageNode);
// Modifying the content
const edits = modify(content, ['name'], 'Jane Doe', { tabSize: 2, insertSpaces: true });
const newContent = applyEdits(content, edits);
console.log('Modified Content:', newContent);
// Writing the modified content back to file
fs.writeFile(filePath, newContent, (err) => {
if (err) {
console.error(err);
} else {
console.log('File updated successfully');
}
});
});