文章目录
引言
JSON(JavaScript Object Notation)模块是一种轻量级的文本数据交换格式,可以理解为键值对的集合,JSON是存储和交换文本信息的语法。下面展示一个JSON实例。
{
"id": 29738501,
"name": "跟着你到天边 钢琴版",
"duration": 174001,
"hearTime": 0,
"commentThreadId": "R_SO_4_29738501",
"score": 40, # 得分
"mvid": 0,
"hMusic": null,
"disc": "",
"fee": 0,
"no": 1,
"rtUrl": null,
"ringtone": null,
"rtUrls": [],
"rurl": null,
"status": 0,
"ftype": 0,
"mp3Url": "http://m2.music.126.net/vrVa20wHs8iIe0G8Oe7I9Q==/3222668581877701.mp3",
"audition": null,
"playedNum": 0,
"copyrightId": 0,
"rtype": 0,
"crbt": null,
"popularity": 40, # 流行度
"dayPlays": 0,
"alias": [],
"copyFrom": "",
"position": 1,
"starred": false, # 是否有被加星
"starredNum": 0
"artists": [
{
"img1v1Url": "http://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg",
"name": "群星",
"briefDesc": "",
"albumSize": 0,
"img1v1Id": 0,
"musicSize": 0,
"alias": [],
"picId": 0,
"picUrl": "http://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg",
"trans": "",
"id": 122455
}
],
"artist": {
"img1v1Url": "http://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg",
"name": "",
"briefDesc": "",
"albumSize": 0,
"img1v1Id": 0,
"musicSize": 0,
"alias": [],
"picId": 0,
"picUrl": "http://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg",
"trans": "",
"id": 0
}
}
}
python中可以使用json模块对JSON数据进行编码与解码,分别是dumps()、dump()、loads()函数、load()函数
1.json.dumps()与json.dump()
json.dumps()函数将python对象编码成JSON字符串。json.dump()函数将python对象编码成JSON字符串并写入到文件中。
import json
data = [{
'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}]
data2 = json.dumps(data)
print(data2)
print(type(data2))
[{
"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}]
<class 'str'>
import json
data = [{
'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}]
with open('f.json', 'w') as f:
data2 = json.dump(data, f)
会生成f.json文件
2.json.loads()与json.load()
json.loads()函数将已编码的JSON字符串解码成python对象。json.load()函数将JSON数据解码成python对象
import json
data = [{
'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}]
data2 = json.dumps(data)
print(type(data2))
data3 = json.loads(data2)
print(type(data3))
<class 'str'>
<class 'list'>
import json
with open('f.json','r') as f:
print(type(f))
data = json.load(f)
print(data)
print(type(data))
<class '_io.TextIOWrapper'>
[{
'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}]
<class 'list'>
3.json.dumps参数介绍
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None,
separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
4.将JSON对象转换成DataFrame或者其他数据结构
将字典构成的列表传入到DataFrame中来构造函数,并选出数据字段的子集。
pd.read_json可以自动将JSON数据集按照指定次序转换为Series或者DataFrame
从pandas中将数据导出为JSON格式,to_json方法
5.总结
如果你要处理的是文件而不是字符串,使用 json.dump() 和 json.load() 来编码和解码JSON数据;反之亦然