一、json模块
在Python中json是一个非常常用的模块,这个主要有4个方法:
1、json.dumps
2、json.dump
3、json.loads
4、json.load
讲解一下json的四种方法不同、相同之处。
这四个方法中都是把其他类型的对象转为Python对象。
Python对象包括:
所有Python基本数据类型,列表,元组,字典,自己定义的类,等等等等,当然不包括Python的字符串类型,把字符串或者文件鎏中的字符串转为字符串会报错的
1.1不相同点:
1、loads、dumps操作的是字符串、python数据结构
2、load、dump操作的是文件流,处理文件
1.2 相同点
1、除了第一个参数(要转换的对象)类型不同,其他所有的参数都相同
2、最终都是转换成Python对象
1、json.dumps()
json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。
class Json_dumps():
def __init__(self):
self.jsObj = self.write_str()
def write_str(self):
dict = {'a': '1111', 'b': '2222', 'c': '3333', 'd': '4444'}
json_filename = ('../dataconfig/login.json')
#第一种方法
jsObj = json.dumps(dict)
with open(json_filename, "w") as f:
f.write(jsObj)
return jsObj
f.close()
#第二种方法
json.dump(dict, open(json_filename, "w"))
if __name__ == '__main__':
data_json = Json_dumps()
print(data_json.write_str())
print(type(data_json.write_str()))
2、json.loads()
json.loads()用于将str类型的数据转成dict。
dict = {'a':'1111','b':'2222','c':'3333','d':'4444'}
jsDumps = json.dumps(dict)
data_json = json.loads(jsDumps)
print(type(dict))
print(dict)
print(type(jsDumps))
print(jsDumps)
print(type(data_json))
print(data_json)
str = '{"a": "1111", "b": "2222", "c": "3333", "d": "4444"}'
str_dict = json.loads(str)
print(type(str_dict))
print(str_dict)
3、json.dump()
json.dump()用于将dict类型的数据转成str,并写入到json文件中。下面两种方法都可以将数据写入json文件
class Json_dump():
def __init__(self):
self.jsObj = self.write_str()
def write_str(self):
dict = {'a': '1111', 'b': '2222', 'c': '3333', 'd': '4444'}
json_filename = ('../dataconfig/login.json')
#第一种方法
jsObj = json.dumps(dict)
with open(json_filename, "w") as f:
f.write(jsObj)
return jsObj
f.close()
#第二种方法
json.dump(dict, open(json_filename, "w"))
if __name__ == '__main__':
data_json = Json_dump()
print(data_json.write_str())
print(type(data_json.write_str()))
4、json.load()
json.load()用于从json文件中读取数据。
import json
class OpenrationJson:
#读取json文件
def __init__(self):
self.data = self.read_data()
def read_data(self):
with open("../dataconfig/login.json") as fp:
data = json.load(fp)
return data
#根据关键字获得数据
def get_data(self,id):
return self.data[id]
if __name__ == '__main__':
opjson = OpenrationJson()
print(opjson.get_data('login'))