我认为您可以使用正则表达式解决此问题,它对我有用:
import re
pattern = re.compile('"([a-zA-Z0-9]+)"\s*:\s*(".*"|\[.*\]|\{.*\})')
dict(re.findall(pattern, json_string))
但我不知道这是否更快,您需要尝试使用您的数据。
[编辑]
是的,它更快。我尝试了下面的脚本,正则表达式版本快了 5 倍。
使用 json 模块:
import json
val='''
{
"key1": "val1",
"key2": ["a","b", 3],
"key3": {"foo": 27, "bar": [1, 2, 3]}
}
'''
for n in range(100000):
dict((k,json.dumps(v)) for k,v in json.loads(val).items())
使用正则表达式:
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))