python json是什么_Python解析Json数据

一.什么是Json?

首先解释一下,什么是json?JSON:JavaScript 对象表示法(JavaScript Object Notation)。

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。

里看完上边是不是懂了些什么东西?

不懂的话就直接上图了!

看了之后是不是还是有点不懂??

其实就是键值对存储信息的形式

Key:Value

这种形式,说白了有点像python里的dict差不多的东西。

一般的像小程序如果不想自己搭建网站就可以,就可以去apiStore申请一个api通过解析Json数据绑定到部件上去,我之前写的小程序就是通过请求api解析Json绑定数据实现的,如果有兴趣可以看一下:经纬我查查。

举一个小例子:

{

"name":"tom",

"age":"15",

"详细信息":[{"1":"aaa","2":"bbb"}]

}

二.解析Json

1.使用java解析json

之前用java写的一个android项目就是使用java发起请求,请求一个天气数据,之后对json数据进行解析,如果感兴趣可以去看一下。这里就不过多介绍java解析json。大全麦圈齁死你:Android天气查询页面设计​zhuanlan.zhihu.comv2-27dda06f104e1669d6e733e75181f1ae_180x120.jpg

直接看.java后缀的文件即可,Layout.xml是布局文件。

如果写安卓,想写个查询天气的页面可以直接套用。

2.使用python解析json

这地方就是重点了!!这里先简单的说一下loads的使用,之后有时间了将会写load dump loads dumps的详细使用。

这里需要加载json包

我先把这次实验的数据放在这

{"returnCode":"0","returnMessage":"Query Succeed","rowCount":"1","colCount":"3","requestParams":"datacode=SURF_CHN_MUL_HOR&staids=54823&timerange=[20190413140000,20190413140000]&elements=TEM,TEM_Max,TEM_Min","requestTime":"2019-04-13 14:39:01","responseTime":"2019-04-13 14:39:01","takeTime":"0.017","fieldNames":"温度/气温 最高气温 最低气温","fieldUnits":"摄氏度(℃) 摄氏度(℃) 摄氏度(℃)","DS":[{"TEM":"14.6000","TEM_Max":"15.4000","TEM_Min":"14.5000"}]}

比如说我们这次要获得returnMessage中的内容;

import json

data='{"returnCode":"0","returnMessage":"Query Succeed","rowCount":"1","colCount":"3","requestParams":"datacode=SURF_CHN_MUL_HOR&staids=54823&timerange=[20190412120000,20190412120000]&elements=TEM,TEM_Max,TEM_Min","requestTime":"2019-04-13 14:17:46","responseTime":"2019-04-13 14:17:46","takeTime":"0.016","fieldNames":"温度/气温 最高气温 最低气温","fieldUnits":"摄氏度(℃) 摄氏度(℃) 摄氏度(℃)","DS":[{"TEM":"14.7000","TEM_Max":"15.1000","TEM_Min":"14.7000"}]}'

jsonstr=json.loads(data)

print(jsonstr["returnMessage"])

运行之后的结果:

再比如我们要获得TMP:

因为这个是{{}}的形式,

代码如下:

import json

data='{"returnCode":"0","returnMessage":"Query Succeed","rowCount":"1","colCount":"3","requestParams":"datacode=SURF_CHN_MUL_HOR&staids=54823&timerange=[20190412120000,20190412120000]&elements=TEM,TEM_Max,TEM_Min","requestTime":"2019-04-13 14:17:46","responseTime":"2019-04-13 14:17:46","takeTime":"0.016","fieldNames":"温度/气温 最高气温 最低气温","fieldUnits":"摄氏度(℃) 摄氏度(℃) 摄氏度(℃)","DS":[{"TEM":"14.7000","TEM_Max":"15.1000","TEM_Min":"14.7000"}]}'

jsonstr=json.loads(data)

print(jsonstr["DS"][0]["TEM"])

结果如下:

是不是很简单?

学会上边提取json数据之后我们就可以通过接口将数据存储到本地了,可以将存储的数据进行数据分析之类。

例如下边通过构造url请求之后获得数据,获取数组中几个城市的最高温度

import json

import requests

city=["济南","北京","南京","西安","青岛","潍坊","济宁","菏泽"]

urls="https://www.apiopen.top/weatherApi?city="

url=[]

for i in range(0,len(city)):

url.append(urls+city[i])

res=requests.get(url[i])

res.encoding=res.apparent_encoding;

jsonstr=json.loads(res.text)

print(jsonstr["data"]["forecast"][0]["high"])

以上只是一个比较简单的案例,我使用的是构造url的方法,我们也可以使用队列存储url进行爬取。比较好用的队列任务库有:celery、huey、mrq、RQ、simpleq

提供一个思路,就是通过构造请求不断请求api,之后解析数据到excel中,也就是pythonIO就可以获得数据进行之后的数据分析。

pythonIO不会请看这里:

可以通过这种思路去获取大量数据进行分析。

剩下的就需要自己去探索咯!

嘿嘿最近文章写的有点少,因为大部分精力在写关于爬虫的东西,推一下自己建立的公众号吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值