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

如何在Python中将类JSON字符串转换为字典?

解决方法

首先你的原始字符串本身有语法错误,这是导致转换失败的核心原因:key1对应的是{ [ ... ] },这既不是合法的JSON对象(对象必须是键值对,不能直接放数组),也不是合法的Python字典格式。得先把这个错误修正:

  • 如果key1的值就是那组数组,把{ [ ... ] }改成[ ... ],修正后的字符串应该是:
'''{
    'key': 'value',
    'key1': [
        {
            'one': 'hi'
        },
        {
            'two': 'hi'
        }
    ]
}'''
  • 如果key1是个对象,里面要给数组加个键,比如改成:
'''{
    'key': 'value',
    'key1': {
        'items': [
            {
                'one': 'hi'
            },
            {
                'two': 'hi'
            }
        ]
    }
}'''

修正语法后,用下面两种方法转字典:

方法1:用ast.literal_eval(推荐,比eval安全)

Python的ast模块里的literal_eval可以安全解析Python字面量,支持单引号的字典格式:

import ast

str_data = '''{
    'key': 'value',
    'key1': [
        {
            'one': 'hi'
        },
        {
            'two': 'hi'
        }
    ]
}'''

result_dict = ast.literal_eval(str_data)
print(result_dict['key1'][0]['one'])  # 输出 hi

方法2:修正引号后用json.loads

JSON要求必须用双引号,所以先把单引号替换成双引号,再用json.loads:

import json

str_data = '''{
    'key': 'value',
    'key1': [
        {
            'one': 'hi'
        },
        {
            'two': 'hi'
        }
    ]
}'''

# 替换单引号为双引号
json_str = str_data.replace("'", '"')
result_dict = json.loads(json_str)
print(result_dict['key1'][0]['one'])  # 输出 hi

之前你替换引号后报错,就是因为原始字符串里的key1那部分语法错误,修正后就能正常解析了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:45:42