一.什么是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.com

python3解析json遍历 python解析json数据_python json是什么

直接看.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不会请看这里:

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

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