guess-json-indent v3.0.0
Guess the indentation of a JSON string.
Hire me
Please reach out if you're looking for a Node.js API or CLI engineer (11 years of experience). Most recently I have been Netlify Build's and Netlify Plugins' technical lead for 2.5 years. I am available for full-time remote positions.
Example
import guessJsonIndent from 'guess-json-indent'
const input = [{ example: true }]
guessJsonIndent(JSON.stringify(input)) // undefined
guessJsonIndent(JSON.stringify(input, undefined, 1)) // 1
guessJsonIndent(JSON.stringify(input, undefined, 2)) // 2
guessJsonIndent(JSON.stringify(input, undefined, 4)) // 4
guessJsonIndent(JSON.stringify(input, undefined, '\t')) // '\t'
guessJsonIndent(JSON.stringify(input, undefined, '\t\t')) // '\t\t'
// Keep the indentation of a JSON string when parsing/serializing it
const jsonString = JSON.stringify(input, undefined, 2)
const indent = guessJsonIndent(jsonString)
const parsedValue = JSON.parse(jsonString)
console.log(JSON.stringify(input, undefined, indent)) // Same as jsonStringInstall
npm install guess-json-indentThis package works in both Node.js >=18.18.0 and browsers.
This is an ES module. It must be loaded using
an import or import() statement,
not require(). If TypeScript is used, it must be configured to
output ES modules,
not CommonJS.
API
guessJsonIndent(jsonString)
The return value is the same as the third argument to JSON.stringify():
undefined: none- integer: number of spaces
- string: tabs
Benchmarks
This library is very fast thanks to:
- Looking only at the first indented line, which is sufficient in the vast majority of real-life cases
- Being specific to JSON
The following benchmarks compares it:
- With
detect-indent,detect-json-indentanddetect-indentation - On a big JSON string (8MB)
guess-json-indent: 43ns
detect-json-indent: 60114470ns
detect-indentation: 141975495ns
detect-indent: 198161087nsRelated projects
truncate-json: Truncate a JSON stringis-json-value: Check if a value is valid JSONsafe-json-value: ⛑️ JSON serialization should never fail
Support
For any question, don't hesitate to submit an issue on GitHub.
Everyone is welcome regardless of personal background. We enforce a Code of conduct in order to promote a positive and inclusive environment.
Contributing
This project was made with ❤️. The simplest way to give back is by starring and sharing it online.
If the documentation is unclear or has a typo, please click on the page's Edit
button (pencil icon) and suggest a correction.
If you would like to help us fix a bug or add a new feature, please check our guidelines. Pull requests are welcome!