python调用web api、json格式

一、什么是JSON格式?

简单的键值对

{"name":"admin","age":18}
这就是一种最简单的json,注意:

  • json是一种纯字符数据,不属于编程语言
  • json数据以键值对形式存在,多个键值对之间用逗号,隔开,键值对的键和值之间用冒号:连接
  • json数据中的键值对可以使用编程语言中所谓的关键字
  • json的数据可以用花括号{}或中括号[]包裹,对应js中的object和array

所以,json数据的格式可以是:

{"name":"admin","age":18}
也可以是:
["hello",3.1415,"json"]
还可以是:
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}]

不能是:(key没有双引号)
{"name":"admin",age:18}
不能是:(无意义的逗号)
{"name":"admin","age":18,}
不能是:(不允许出现函数)
{"name":"admin","age":18,"show":function()()}
不能是:(不允许出现undefined
{"name":"admin","age":18,"show":undefined}
不能是:(不允许出现NaN
{"name":"admin","age":18,"strong":NaN}
不能是:(无意义的逗号)
["hello",3.1415,"json",]
不能是:(无意义的逗号)
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20},]

二、requests.get

事实上几乎所有编程语言中都有对json数据转换的支持:
js中,json与对象的转换:JSON.parse()/JSON.stringify();
php中,json与数组的转换:json_encode()/json_decode();
java中,json与对象的转换:fromJson()/toJson();
python中,json与对象的转换:json.dumps()/json.loads();

import requests
import pygal
from pygal.style import LightColorizedStyle as LCS,LightenStyle as LS
#执行API调用并存储响应
url='https://api.github.com/search/repositories?q=language:python&sort=stars'#存储API调用的URL
r=requests.get(url) #获得URL对象
print("Status code:",r.status_code) #判断请求是否成功(状态码200时表示请求成功)
response_dict=r.json() #API返回json格式的信息(将响应存储到变量中)
print("Total repositories:",response_dict['total_count'])
#探索有关仓库的信息
repo_dicts=response_dict['items']
'''
print("Repositories returned:",len(repo_dicts))  #获得了多少个仓库
#研究第一个仓库
repo_dict=repo_dicts[0]
print('\nKeys:',len(repo_dict))
for key in sorted(repo_dict.keys()):
    print(key)
'''
names,stars=[],[]     #获得项目的名称和星数
for repo_dict in repo_dicts:
    names.append(repo_dict['name'])
    stars.append(repo_dict['stargazers_count'])
#可视化
my_style=LS('#333366',base_style=LCS)
chart=pygal.Bar(style=my_style,x_lable_rotation=45,show_legend=False)#创建一条简单的条形图
chart._title='Most-Starred Python Projects on GitHub'
chart.x_labels=names
chart.add('',stars)
chart.render_to_file('python_repos.svg')

三、requests.post

import requests,json
 
url_json = 'http://httpbin.org/post'
data_json = json.dumps({'key1':'value1','key2':'value2'})   #dumps:将python对象解码为json数据
r_json = requests.post(url_json,data_json)
print(r_json)
print(r_json.text)
print(r_json.content)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值