python - http响应返回的json对象

标签 python json django unicode python-requests

我正在使用 python 和 django 开发一些 REST API。我对请求调用返回的 JSON unicode 字符串有疑问。所以,我正在做类似的事情:

resp = requests.get(self.url)
if resp.status_code is status.HTTP_200_OK:
    obj = json.loads(resp.json())

有了这个我可以遍历条目:

for o in obj:
    print o

这会打印出如下内容:

{u'pk': 1, u'model': u'aslapp.imagetypemodel', u'fields': {u'type': u'PNG'}}
{u'pk': 2, u'model': u'aslapp.imagetypemodel', u'fields': {u'type': u'JPG'}}

但是,我读到 resp.json() 调用应该在内部调用此 json.loads() 方法并将处理编码内容。然而,只是做:

obj = resp.json()
for o in obj:
    print o

只是遍历 unicode 字符串中的每个字符。如果我想遍历 JSON 条目,我是否应该再次通过 loads 方法运行它?遍历 resp.json() 返回的所有 JSON 记录的正确方法是什么。

最佳答案

你是对的,resp.json() 确实为你调用了 json.loads()

因此,如果 resp.json() 返回一个字符串,则表明 API 对数据进行了两次 json 编码。例如,它返回 "{\"pk\": 1}" 而不是 {"pk": 1}

如果您无法控制 API,则必须对其进行两次解码才能获取 Python 对象。

关于python - http响应返回的json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40725155/

相关文章:

asp.net mvc json打开对话框问题

python - Django 在 runserver 之后卡住了

python - 累积相对于原点的滑动窗口

php - Python 性能与 PHP

python - 有没有 beautifulsoup 函数可以选择重复的类名?

python - 使用 h5py 以写入模式打开已打开的 hdf5 文件

json - Golang Unmarshal slice 类型接口(interface)

ios - 如何获取JSON数据中的第一个对象名称?

python - Django 。没有名为 reportlab.pdfgen 的模块

python - 在每个 View 中渲染动态菜单