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

如何从Django返回的requests响应对象中解析提取指定字段属性

正确获取somekey的方案

核心原因

问题根因是Django侧返回格式不规范:返回代码里用{res.json().get('access_token')}生成的是Python集合(不是字典),最终序列化后得到的是嵌套数组结构,且数组内层存储的是JSON格式字符串,不是结构化的JSON对象。

前端临时解决代码

不需要修改后端的前提下,按如下步骤取值即可:

import json
import requests

# 原有请求逻辑
url = 'http://localhost:8000/some-endpoint'
body = {
    'key': 'val'
}
response = requests.post(url, json=body)

# 层级解析取值
# 1. 先把响应整体转为JSON结构,得到外层嵌套数组
outer_list = response.json()
# 2. 取出内层的JSON字符串
inner_json_str = outer_list[0][0]
# 3. 把字符串反序列化为字典
inner_dict = json.loads(inner_json_str)
# 4. 直接取目标字段
somekey_value = inner_dict['somekey']

根治方案(修改Django侧返回逻辑)

把返回的集合改为标准字典结构,后续前端可以直接取值:

# 修正后的Django返回代码
return Response({
    "somekey": res.json().get('access_token'),
    "expires_in": 86400
}, status=200)

修改后前端只需要一行代码即可取值:

somekey_value = response.json()['somekey']

之前报错的原因说明

  • response.json()报错:早期返回格式存在不可哈希的字典元素,触发序列化异常
  • json.dumps(response).json():response是requests库的Response对象,不能直接被JSON序列化
  • response[0]['somekey']:Response对象不是列表/字典类型,不支持下标访问
  • response.get('somekey'):Response对象没有内置get方法,该方法是字典的专属方法
  • response.text.json():response.text是字符串类型,只有Response对象才有json()方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:24:03