python—json模块的编码与解码

引言

  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数据;反之亦然

猜你喜欢

转载自blog.csdn.net/weixin_46649052/article/details/114819518
今日推荐