python - 如何将 json 转换为 Python 列表?

标签 python json python-3.x pycurl

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

相关文章:

python - dict.items 和 dict.values 之间的行为不一致

python - 为什么 print ("{}").format() 有效语法?

ios - 如何使用 Sync 将 JSON 解析为与其自身有关系的实体?

json - 如何使用 postman 通过 REST API 从 Sharepoint 自动下载文件

python-3.x - 在 centos 7 中使用 python 编译 Vim

python - 如何在 Python 3 中使用 "isclose"比较而不是绝对相等 (==) 对带有 float 的元组进行排序?

python - django-rest-framework: __init__() 恰好接受 1 个参数(给定 2 个)

javascript - 如何将 JavaScript 中的字符串值转换为代码中的字符串?

python-3.x - Firefox Selenium (python) 不会打开 WebRTC 流

python - pandas:创建从 1 到每组长度的列