我正在使用 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/