Python解析API返回JSON数据:如何提取嵌套字典指定键
解决嵌套payload字段提取问题
嘿,这个问题我碰到过好多次,别慌!核心问题在于你的payload不是真正的Python字典,只是一个长得像字典的字符串——所以直接按字典方式取值肯定行不通。咱们分两步就能搞定:
第一步:清理并转换payload字符串为字典
你的payload里还混了中文单引号(比如‘sam b’里的引号),这会让转换工具报错,所以得先把这些中文引号换成英文的。然后用ast.literal_eval把字符串转成真正的字典(别用eval,不安全!)。
第二步:提取目标字段
转成字典后,就可以像操作普通字典一样直接取你要的字段了。
完整代码示例
# 假设这是你从API获取到的原始数据 api_response = { u'id': u'000123', u'payload': u"{'account_title': u’sam b’, 'phone_num': ‘1234567890’, 'security_pin': u'000000', 'remote_word': u’secret123’, 'email_address': ‘email@gmail.com’, 'password': u’password123’}" } # 1. 清理payload里的中文单引号 clean_payload = api_response['payload'].replace('‘', "'").replace('’', "'") # 2. 把字符串转成Python字典 import ast payload_dict = ast.literal_eval(clean_payload) # 3. 提取你需要的字段啦! target_email = payload_dict['email_address'] target_account = payload_dict['account_title'] # 测试输出 print(target_email) # 会输出: email@gmail.com
额外说明
如果你的API返回的payload里引号都是英文的(没有中文引号),那可以跳过清理那一步,直接用ast.literal_eval(api_response['payload'])转换就行。
内容的提问来源于stack exchange,提问作者srb7
相关产品推荐
相关产品推荐

