我想这一定有一个简单的答案,但我很挣扎:我想获取一个 url(输出 json)并在 python 中的可用字典中获取数据。我被困在最后一步了。
>>> import urllib2
>>> import simplejson
>>> req = urllib2.Request("http://vimeo.com/api/v2/video/38356.json", None, {'user-agent':'syncstream/vimeo'})
>>> opener = urllib2.build_opener()
>>> f = opener.open(req)
>>> f.read() # this works
'[{"id":"38356","title":"Forgetfulness - Billy Collins Animated Poetry","description":"US Poet Laureate Billy Collins reads his poem ","url":"http:\\/\\/vimeo.com\\/38356","upload_date":"2006-01-24 15:21:03","thumbnail_small":"http:\\/\\/80.media.vimeo.com\\/d1\\/5\\/47\\/74\\/thumbnail-4774968.jpg","thumbnail_medium":"http:\\/\\/80.media.vimeo.com\\/d1\\/5\\/46\\/85\\/thumbnail-4685118.jpg","thumbnail_large":"http:\\/\\/images.vimeo.com\\/87\\/39\\/873998\\/873998_640x480.jpg","user_name":"smjwt","user_url":"http:\\/\\/vimeo.com\\/smjwt","user_portrait_small":"http:\\/\\/bitcast.vimeo.com\\/vimeo\\/portraits\\/defaults\\/d.30.jpg","user_portrait_medium":"http:\\/\\/bitcast.vimeo.com\\/vimeo\\/portraits\\/defaults\\/d.75.jpg","user_portrait_large":"http:\\/\\/bitcast.vimeo.com\\/vimeo\\/portraits\\/defaults\\/d.100.jpg","user_portrait_huge":"http:\\/\\/bitcast.vimeo.com\\/vimeo\\/portraits\\/defaults\\/d.300.jpg","stats_number_of_likes":"281","stats_number_of_plays":"9173","stats_number_of_comments":23,"duration":"112","width":"320","height":"240","tags":"poetry, poet, online poetry, famous poet, video poetry, modern poetry, famous poem, poetry sites, poetry websites, audio poetry, american poet, animation clips, american poetry, free poetry sites, animation art, free poetry, animated clips, poem, poet laureate"}]'
>>> simplejson.load(f)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.5/site-packages/django/utils/simplejson/__init__.py", line 298, in load
parse_constant=parse_constant, **kw)
File "/usr/lib/python2.5/site-packages/django/utils/simplejson/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.5/site-packages/django/utils/simplejson/decoder.py", line 326, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.5/site-packages/django/utils/simplejson/decoder.py", line 344, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
任何想法我哪里出错了?
最佳答案
试试
f = opener.open(req)
simplejson.load(f)
没有先运行 f.read() 。当你运行 f.read() 时,文件句柄的内容会被吞掉,所以当你调用 simplejson.load(f)
https://stackoverflow.com/questions/1640715/
相关文章:
javascript - react router v^4.0.0 Uncaught TypeErr
python - 在python中将SQL表作为JSON返回
java - 将元数据添加到 RESTful JSON 响应的最佳实践是什么?
json - IE9 JSON 数据 "do you want to open or save th
json - 从 Newtonsoft 的 JSON 序列化器解析 JSON 日期时间
php - 如何在预先存在的 SQL 数据库之上使用 Elastic Search?
javascript - jQuery.getJSON - 访问控制允许来源问题
xml - 为什么人们希望将 Json 和 XML 作为输出传递到他们的 REST 接口(inter