Extract JSON from LLM text output, with a fallback if it can't be parsed.
constparser=newStructuredParser();constresult=parser.parse(llmOutput);LLMs sometimes wrap JSON in prose, markdown fences, or return slightly malformed JSON. Manually handling that on every call is annoying.
- Tries
JSON.parse()on the raw text first. - If that fails, looks for the first
{...}or[...]block in the text and tries parsing that. - If both fail and you passed a
fallbackoption, returns the fallback instead of throwing. - If both fail and there's no fallback, throws an
Errorwith the original text.
- It does not validate against a schema. The
schemaargument to.parse()is accepted but currently unused — pass it if you want (e.g. for your own future integration), but nothing in this library checks the parsed data against it. - No Zod integration, despite earlier versions of this README claiming one. If you want schema validation, run the parsed result through your own validator (Zod, Ajv, etc.) after calling
.parse().
constparser=newStructuredParser();consttext='Sure, here you go: {"name": "John", "age": 30}';constdata=parser.parse(text);// { name: "John", age: 30 }// with a fallbackconstsafe=parser.parse('not json at all',undefined,{fallback: {}});// {}Sponsored by Ferrow
Part of the ferrow-toolkit collection · Sponsored by Ferrow