Parse incomplete JSON text in best-effort manner. Useful for partial JSON responses, broken network packages, or LLM responses exceeding tokens.
npm install best-effort-json-parser
You can also install best-effort-json-parser
with pnpm, yarn, or slnpm
import { parse } from 'best-effort-json-parser'
let data = parse(`[1, 2, {"a": "apple`)
console.log(data) // [1, 2, { a: 'apple' }]
By default, the parser logs errors to console.error
. You can control error logging behavior:
import {
disableErrorLogging,
enableErrorLogging,
setErrorLogger,
} from 'best-effort-json-parser'
// Disable error logging completely
disableErrorLogging()
// Re-enable error logging (default behavior)
enableErrorLogging()
// Set a custom error logger
setErrorLogger((message, data) => {
// Your custom logging logic here
console.log('Custom error:', message, data)
// Common destinations for error data:
// - Database storage for analysis
// - File system logging
// - Third-party services (Sentry, LogRocket, etc.)
// - Monitoring and alerting systems
})
// Main parse function
function parse(s: string | undefined | null): any
// Parse namespace with additional properties
namespace parse {
lastParseReminding: string | undefined
onExtraToken: (text: string, data: any, reminding: string) => void | undefined
}
// Error logging functions
function setErrorLogger(logger: (message: string, data?: any) => void): void
function disableErrorLogging(): void
function enableErrorLogging(): void
More examples see parse.spec.ts
This is free and open-source software (FOSS) with BSD-2-Clause License