Python urllib2:从url接收JSON响应

Dee*_*k B 87 python json urllib2

我试图使用Python获取URL,响应是JSON.但是,当我跑

import urllib2
response = urllib2.urlopen('https://api.instagram.com/v1/tags/pizza/media/XXXXXX')
html=response.read()
print html
Run Code Online (Sandbox Code Playgroud)

html是str类型,我期待一个JSON.有没有什么办法可以将响应捕获为JSON或python字典而不是str.

Mar*_*ers 179

如果URL返回有效的JSON编码数据,请使用该json解码:

import urllib2
import json

response = urllib2.urlopen('https://api.instagram.com/v1/tags/pizza/media/XXXXXX')
data = json.load(response)   
print data
Run Code Online (Sandbox Code Playgroud)


小智 35

import json
import urllib

url = 'http://example.com/file.json'
r = urllib.request.urlopen(url)
data = json.loads(r.read().decode(r.info().get_param('charset') or 'utf-8'))
print(data)
Run Code Online (Sandbox Code Playgroud)

urllib,用于Python 3.4
HTTPMessage,由r.info()返回


小智 5

"""
Return JSON to webpage
Adding to wonderful answer by @Sanal
For Django 3.4
Adding a working url that returns a json (Source: http://www.jsontest.com/#echo)
"""

import json
import urllib

url = 'http://echo.jsontest.com/insert-key-here/insert-value-here/key/value'
respons = urllib.request.urlopen(url)
data = json.loads(respons.read().decode(respons.info().get_param('charset') or 'utf-8'))
return HttpResponse(json.dumps(data), content_type="application/json")
Run Code Online (Sandbox Code Playgroud)