Robustly parses an LLM's structured output (JSON). Works on character scalars or an llmr_response. Strips code fences first, then tries strict parsing, then attempts to extract the largest balanced {...} or [...].
llm_parse_structured(x, strict_only = FALSE, simplify = FALSE)
A parsed R object (list), or NULL on failure.
Character or llmr_response.
If TRUE, do not attempt recovery via substring extraction.
Logical passed to jsonlite::fromJSON (simplifyVector = FALSE
when FALSE).
The return contract is list-or-NULL; scalar-only JSON is treated as failure.
Numerics are coerced to double for stability.