繁体   English   中英

http响应返回的json对象

[英]json object returned by http response

我正在使用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对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM