You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用json.loads将含未知函数的字符串反序列化为目标字典?

处理含未知函数的类JSON字符串反序列化

我有如下格式的字符串:

test = '{"key1":"value1", "key2": UnknownFunction("value2")}'

由于其中包含未知函数UnknownFunction,无法直接使用json.loads进行反序列化。我希望找到简便方法,将这类未知函数(或任意未知函数)映射为str类型,最终得到如下字典:

{"key1":"value1", "key2": "value2"}

我当前使用以下代码实现了需求,但想了解是否有更优方案:

for removable in ["UnknownFunction"]:
    test= test.replace(removable + "(", "")
test = test.replace(")", "")
data = json.loads(test)

更优方案:正则表达式批量处理

原方法的局限性在于只能处理提前指定的函数名,遇到新的未知函数需要手动更新列表。使用正则表达式可以一次性匹配任意函数调用格式,直接提取括号内的目标内容:

import re
import json

test = '{"key1":"value1", "key2": UnknownFunction("value2")}'
# 匹配任意函数调用,替换为括号内的内容
processed_str = re.sub(r'\w+\((.*?)\)', r'\1', test)
data = json.loads(processed_str)
print(data)  # 输出: {'key1': 'value1', 'key2': 'value2'}

正则规则说明

  • \w+:匹配由字母、数字、下划线组成的函数名,覆盖绝大多数常规函数命名
  • \(:匹配函数调用的左括号
  • (.*?):非贪婪模式捕获括号内的所有内容,作为提取目标
  • \):匹配函数调用的右括号
  • 替换为\1,即保留捕获到的括号内内容

如果你的场景中函数名包含特殊字符(比如连字符、点号),可以将\w+调整为[\w\-.]+这类更适配的规则,根据实际情况灵活修改。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:13:32