1.json.loads&json.load
json的loads和load方法都是把其它类型的对象转为Python对象,Python对象包括:列表、元组、字典、自己定义的类等,不包括字符串类型(把字符串或者文件流中的字符串转为字符串会报错)
1.1不同点
1.loads操作的是字符串
2.load操作的是文件流
1.2相同点
1.除了第一个参数(要转换的对象)类型不同,其它所有参数都相同
2.最终都是转换成Python对象
1.3例子
s = '{"name": "wade", "age": 54, "gender": "man"}'
#json.loads读取字符串并转为Python对象
print("json.loads将字符串转为Python对象: type(json.loads(s)) = {}".format(type(json.loads(s))))
print("json.loads将字符串转为Python对象: json.loads(s) = {}".format(json.loads(s)))
#json.load读取文件并将文件内容转为Python对象
数据文件要s.json的内容 --> {"name": "wade", "age": 54, "gender": "man"}
with open('s.json', 'r') as f:
s1 = json.load(f)
print("json.load将文件内容转为Python对象: type(json.load(f)) = {}".format(type(s1)))
print("json.load将文件内容转为Python对象: json.load(f) = {}".format(s1))
2.转换成Python对象
loads和load返回的结果类型都相同。
日常工作中最常见的是把字符串通过json.loads转为字典,其实json的loads方法不仅可以把字符串转为字典,还可以转为任何Python对象。
比如,转成Python基本数据类型:
print('json.loads 将整数类型的字符串转为int类型: type(json.loads("123456"))) --> {}'.format(type(json.loads("123456"))))
print('json.loads 将浮点类型的字符串转为float类型: type(json.loads("123.456")) --> {}'.format(type(json.loads("123.456"))))
print('json.loads 将boolean类型的字符串转为bool类型: type(json.loads("true")) --> {}'.format((type(json.loads("true")))))
print('json.loads 将列表类型的字符串转为列表: type(json.loads(\'["a", "b", "c"]\')) --> {}'.format(type(json.loads('["a", "b", "c"]'))))
print('json.loads 将字典类型的字符串转为字典: type(json.loads(\'{"a": 1, "b": 1.2, "c": true, "d": "ddd"}\')) --> %s' % str(type(json.loads('{"a": 1, "b": 1.2, "c": true, "d": "ddd"}'))))