import lark import pprint class JsonTransformer(lark.Transformer): def string(self, el): (el,) = el return el[1:-1] def number(self, el): (el, ) = el return float(el) list = list dict = dict pair = tuple null = lambda self, _: None true = lambda self, _: True false = lambda self, _: False json = '{"key": ["item0", "item1", 3.14, true]}' with open("json.lark") as f: json_parser = lark.Lark(f, start="value", parser="lalr", transformer=JsonTransformer()) t = json_parser.parse(json) print(t)