json24
Version:
FuzzyJSONParser is a robust JSON parser designed to handle and recover data from JSON strings with extraneous text and incomplete structures. It can parse JSON strings that include redundant pre/post content and recover from missing closing characters lik
60 lines (44 loc) • 2.66 kB
Markdown
# FuzzyJSONParser aka json24
**json24** is a robust JSON parser designed to handle and recover data from JSON strings with extraneous text and incomplete structures. It can parse JSON strings that include redundant pre/post content and recover from missing closing characters like `", ], and }` Might be specifically useful for parsing LLM API responses (ChatGPT, LLAMA, Claude, etc...)
## Features
- Handles extraneous text before and after the JSON string.
- Recovers from incomplete JSON structures.
- Configurable parsing options.
- Provides a simple API for easy integration.
- Works as ```JSON.parse()```'s fallback
## Installation
```bash
npm/bun install json24
```
## Usage
### Basic Example
```javascript
const { FuzzyJsonParser } = require('json24');
const parser = new FuzzyJsonParser({ appendStrOnEnd: '...', hasExplicitUndefined: true });
console.log(
parser.parse(
'Some random text. {"numbers": [1, 2, 3], "users": [{"name": "John"}, {"name": "Jane'
)
)
// Output: { numbers: [1, 2, 3], users: [ { name: 'John' }, { name: 'Jane...' } ] }
```
### Configuration Options
- `appendStrOnEnd` (string, default: '...'): Specifies the string to append to incomplete JSON strings to help close them.
- `hasExplicitUndefined` (boolean, default: false): If set to `true`, the parser will include explicit undefined values in objects.
### API
#### `parse(jsonStr: string, requiredKeys?: string[], options?: ParseOptions): any`
Parses a JSON string while handling extraneous and incomplete structures.
**Parameters:**
- `jsonStr` (string): The JSON string to parse.
- `requiredKeys` (string[]): Optional array of keys that must be present in the JSON string for it to be considered valid. Is helpful when you think there might be multiple JSON-like strings present in the string.
- `options` (ParseOptions): Optional settings to override the default parser options.
**Returns:** `any` - The parsed JSON object or `null` if parsing fails.
## Contributing
FuzzyJSONParser is still in its early stages and not completely tested. While some test cases are included, there's plenty of room for more comprehensive testing and improvement:
- **Feedback:** If you encounter any issues or have suggestions for improvements, please open an issue on GitHub.
- **Testing:** Help us expand the test coverage by writing and submitting new test cases.
- **Bug Fixes:** If you find and fix bugs, please submit a pull request.
- **Features:** If you have ideas for new features or enhancements, feel free to discuss them in an issue or submit a pull request.
Any contribution is welcomed!
## License
This project is licensed under the MIT License.