最近在用python做一个项目,以前也没有学过python,也没有时间从头学起,所以现在都是边学边做。JSON作为目前比较流行的一种数据格式,在python中应用也是非常方便的。今天我就把python下操作JSON的详细方法记录一下,希望能够帮助到有希望有朋友。
首先,在python里面操作JSON,我们希望用到JSON库,在新版本的python里面,JSON库已经自带了,所以不需要额外安装。只需要在使用前进行导入即可:import json
操作JSON主要用到4个方法:
1、json.load(),作用是从文件流中加载JSON,并转成python对象
2、json.loads(),作用是从字符串中加载JSON,并转成python对象
3、json.dump(),作用是将python对象转成JSON字符串,并保存到文件中
4、json.dumps(),作用是将python对象转成JSON字符串
load跟loads方法表示读取JSON,并转成python对象,因此有个encoding参数需要设置,一般设置为utf8,目的是防止中文乱码。
dump跟dumps方法表示将python对象转成JSON字符串,同样是因为中文的问题,因此要设置ensure_ascii=False,如果不设置或者设置为True的话,那么中文汉字将被转换成类似\u5f20\u4e09的unicode编码。另外,还可以设置sort_keys=True,表示将python对象转成JSON字符串的时候将按JSON属性的首字母排序。
下面是具体的测试代码,大家可以参考一下:
import json
# json.loads()方法表示从字符串中读取JSON,loads可以理解为load string
# 将JSON字符串转成Python对象
# encoding="utf8",设置编码,防止中文乱码
json1 = '{"id":1,"name":"张三","addtime":"2019-09-20"}'
c1 = json.loads(json1, encoding="utf8")
print(c1)
# 输出:{'id': 1, 'name': '张三', 'addtime': '2019-09-20'}
# json.dumps()方法表示将JSON对象转成JSON字符串,dumps可以理解为dump string
# 将Python对象转成JSON字符串
# ensure_ascii=False表示输出中文汉字,如果是True的话,则会输出类似\u5f20\u4e09的unicode编码
# sort_keys表示对key按字母顺序进行排序
c2 = {"id": 1, "name": "李四", "addtime": "2019-09-21"}
json2 = json.dumps(c2, ensure_ascii=False, sort_keys=True)
print(json2)
# 输出:{"addtime": "2019-09-21", "id": 1, "name": "李四"}
# json.load()方法表示从文件流中读取读取JSON
# 从文件中读取JSON字符串,并转成Python对象
file = open("1.json", encoding="utf8")
data = json.load(file, encoding="utf8")
print(data)
# 输出:{'id': 1, 'name': '张三', 'addtime': '2018-09-18 17:40:39'}
# json.dump()方法表示将Python对象转成JSON字符串,并写入文件流
# 将Python对象转成JSON字符串,并写入文件流
c3 = {"id": 1, "name": "李四", "addtime": "2019-09-21"}
file = open("3.json", mode="w", encoding="utf8")
json.dump(obj=c3, fp=file, ensure_ascii=False, sort_keys=True)
file.close()
# 遍历JSON,需要先将JSON字符串转成Python对象,然后再按字典的方式读取即可
json1 = '{"id":1,"name":"张三","addtime":"2019-09-20"}'
c1 = json.loads(json1, encoding="utf8")
print("id:%s,name:%s,addtime:%s" % (c1["id"], c1["name"], c1["addtime"]))
# 输出:id:1,name:张三,addtime:2019-09-20
json1 = '[{"id": 1,"name": "张三","addtime": "2018-09-17 16:54:45"},{"id": 2,"name": "李四","addtime": "2018-09-18 13:24:25"}]'
c1 = json.loads(json1,encoding="utf8")
print(c1)
for x in c1:
print(x["id"])
print(x["name"])
print(x["addtime"])
# 输出:
# 张三
# 2018-09-17 16:54:45
# 2
# 李四
# 2018-09-18 13:24:25
源码下载:python操作json.zip
ok
mjj通道