Parses malformed JSON strings via tolerant fallback, extracting literals/partials from LLM outputs.
class DirtyJson:
def __init__(self):
self._reset()
def _reset(self):
self.json_string = ""
self.index = 0
self.current_char = None
self.result = None
self.stack = []
@staticmethod
def parse_string(json_string):
parser = DirtyJson()
return parser.parse(json_string)
def parse(self, json_string):
self._reset()
self.json_string = json_string
self.index = self.get_start_pos(self.json_string) #skip any text up to the first brace
self.current_char = self.json_string[self.index]
self._parse()
return self.result
def feed(self, chunk):
self.json_string += chunk
if not self.current_char and self.json_string:
self.current_ch
... (truncated -- full source via MCP)
See the full source, get the GitHub permalink, and search 40K more like it.
Get a free API key