import re
val = """{
    "key1": "val1",
    "key2": ["a","b", 3],
    "key3": {"foo": 27, "bar": [1, 2, 3]}
}"""
pattern = re.compile('"([a-zA-Z0-9]+)"\\s*:\\s*(".*"|\\[.*\\]|\\{.*\\})')
for n in range(100000):
    dict(re.findall(pattern, val))
Разбирать только один уровень json