一、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文件中會發(fā)生報錯软能,因此在將數據寫入時需要用到該函數迎捺。
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'))