Package Exports
- ai-json-fixer
- ai-json-fixer/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ai-json-fixer) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
ai-json-fixer
A simple JSON parser specifically designed to handle malformed JSON output from Large Language Models (LLMs) like GPT, Claude, and others.
Features
Core
- Markdown Block Extraction: Extracts JSON from ```json code blocks and inline
code - Trailing Content Removal: Removes explanatory text after valid JSON structures
- Quote Fixing: Fixes unescaped quotes inside JSON strings
- Missing Comma Detection: Adds missing commas between array elements and object properties
- Single-line JSON support for compact LLM outputs like
{"a": 1 "b": 2}and[1 2 3] - Multi-line JSON support for formatted outputs
- Single-line JSON support for compact LLM outputs like
Key Benefits
- Zero Dependencies: Pure TypeScript/JavaScript implementation
- Comprehensive Testing: 86+ tests covering real LLM output patterns
- TypeScript Support: Full type definitions included
- Configurable: Multiple parsing modes and options
- Error Recovery: Graceful handling of malformed input
Installation
npm install ai-json-fixerQuick Start
import { LLMJSONParser } from 'ai-json-fixer';
const parser = new LLMJSONParser();
// Parse JSON from LLM output with markdown
const llmOutput = `Here's the data you requested:
\`\`\`json
{
"users": [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
],
"total": 2
}
\`\`\`
This JSON contains the user information.`;
const result = parser.parse(llmOutput);
console.log(result);
// Output: { users: [...], total: 2 }Common Use Cases
Extract from Markdown
const input = `\`\`\`json\n{"key": "value"}\n\`\`\``;
const result = parser.parse(input); // { key: "value" }Fix Quote Issues
const input = '{"message": "He said "hello" to me"}';
const result = parser.parse(input); // { message: 'He said "hello" to me' }Remove Trailing Content
const input = '{"status": "ok"} The request was successful.';
const result = parser.parse(input); // { status: "ok" }Handle Missing Commas
Multi-line JSON:
const input = `{
"name": "John"
"age": 30
}`;
const result = parser.parse(input); // { name: "John", age: 30 }Single-line JSON:
// Objects
const input1 = '{"a": 1 "b": 2 "c": 3}';
const result1 = parser.parse(input1); // { a: 1, b: 2, c: 3 }
// Arrays
const input2 = '[1 2 3 4 5]';
const result2 = parser.parse(input2); // [1, 2, 3, 4, 5]
// Complex structures
const input3 = '[{"id": 1} {"id": 2}]';
const result3 = parser.parse(input3); // [{ id: 1 }, { id: 2 }]API Reference
LLMJSONParser
parse<T>(input: string, options?: ParseOptions): T | null
Parse JSON input with automatic fixing. Returns parsed object or null if parsing fails.
tryParse<T>(input: string, options?: ParseOptions): ParseResult<T>
Parse with detailed results including applied fixes and confidence score.
Options
interface ParseOptions {
mode?: 'strict' | 'standard' | 'aggressive';
stripMarkdown?: boolean;
trimTrailing?: boolean;
fixQuotes?: boolean;
addMissingCommas?: boolean;
trackFixes?: boolean;
throwOnError?: boolean;
maxFixAttempts?: number;
}Parse Result
interface ParseResult<T> {
data: T | null;
fixes?: Fix[];
confidence?: number;
warnings?: string[];
}Development
# Install dependencies
npm install
# Run tests
npm test
# Build
npm run build
# Run examples
npx tsx examples/basic-usage.tsLicense
MIT