我想在使用 pycurl 时获取列表形式的数据,但它显示的是 json 对象:( 您能告诉我如何打破并从中获取列表的最简单方法吗? 预先感谢您的指导:) 这是我的代码:
import pycurl
import json
from io import BytesIO
c = pycurl.Curl()
data = BytesIO()
c.setopt(c.URL,'https://api.angel.co/1/jobs')
c.setopt(c.WRITEFUNCTION, data.write)
c.perform()
fetched_data= data.getvalue()
print (fetched_data);
最佳答案
使用您已导入的 json
模块解码 json:
result = json.loads(fetched_data.decode('utf8'))
我在这里硬编码了编码; JSON RFC 规定 UTF-8 是默认值,但您可以查看 Content-Type
响应 header 是否有一个 charset
参数来告诉您实际的编码。
我不会使用pycurl
;处理起来真的非常非常麻烦。使用requests
library相反,它可以开箱即用地为您处理 JSON。它为您处理字节流到 Unicode 的解码:
import requests
result = requests.get('https://api.angel.co/1/jobs').json()
该特定 URL 返回一个 JSON 对象,从而生成一个 Python 字典:
{'jobs': [{'angellist_url': 'https://angel.co/jobs?startup_id=267120',
'created_at': '2014-02-06T08:07:35Z',
'equity_cliff': '0.0',
'equity_max': '0.0',
'equity_min': '0.0',
'equity_vest': '0.0',
'id': 22672,
'salary_max': 0,
'salary_min': 0,
'startup': {'angellist_url': 'https://angel.co/nationsroot-1',
'community_profile': False,
'company_url': 'http://nationsroot.com',
'created_at': '2013-09-20T07:55:25Z',
'follower_count': 5,
'hidden': False,
'high_concept': 'Bridge between citizens and politicians',
'id': 267120,
'logo_url': 'https://s3.amazonaws.com/photos.angel.co/startups/i/267120-9513670dbfe74c170201df0e385d1c2c-medium_jpg.jpg?buster=1379663721',
'name': 'NationsRoot',
'product_desc': 'NationsRoot helps you find profiles and report cards of politicians, share your thoughts and rate your political leaders. We believe that citizens are not absolved of their duties once they are done voting. So, We provide a platform where you can rate the quality of government provided services to create real time Report Cards for all politicians.\r\n\r\nOn the other hand, Politicians will have the detail analytics about requirements of citizens in various electoral area which will be helpful during elections and can have latest updates too.',
'quality': 3,
'thumb_url': 'https://s3.amazonaws.com/photos.angel.co/startups/i/267120-9513670dbfe74c170201df0e385d1c2c-thumb_jpg.jpg?buster=1379663721',
'updated_at': '2014-02-06T07:36:36Z'},
'tags': [{'angellist_url': 'https://angel.co/business-development-1',
'display_name': 'Business Development',
'id': 15525,
'name': 'business development',
'tag_type': 'SkillTag'},
{'angellist_url': 'https://angel.co/sales-strategy-and-management',
'display_name': 'Sales Strategy and Management',
'id': 16928,
'name': 'sales strategy and management',
'tag_type': 'SkillTag'},
{'angellist_url': 'https://angel.co/sales-and-marketing-2',
'display_name': 'Sales and Marketing',
'id': 23989,
'name': 'sales and marketing',
'tag_type': 'SkillTag'},
{'angellist_url': 'https://angel.co/australia',
'display_name': 'Australia',
'id': 1618,
'name': 'australia',
'tag_type': 'LocationTag'},
{'angellist_url': 'https://angel.co/sales-2',
'display_name': 'Sales',
'id': 80488,
'name': 'sales',
'tag_type': 'RoleTag'}],
'title': 'Sales Intern',
'updated_at': '2014-02-06T08:07:57Z'},
# many more entries elided
],
'last_page': 184,
'page': 1,
'per_page': 50,
'total': 9195}
您要查找的列表是 result['jobs']
,但您还必须请求其他页面才能获取所有 9195 个结果。
关于python - 如何将 json 转换为 Python 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21597864/