json模塊

json模塊

序列化(serializable):將python或其餘語言的數據類型轉換成字符串python

序列:指的是字符串json

json是第三方的特殊數據格式code

爲何要使用json

爲了讓不一樣語言之間數據能夠共享utf-8

各類語言的數據類型不同,但長相同樣,要想使用其餘語言的數據類型,必須轉換成json數據格式,獲取到json數據格式會轉換成自身的數據類型ci

python數據類型 ——> json數據格式 ——> 字符串 ——> 文件字符串

其餘語言若想使用python保存的數據:it

文件 ——> 字符串 ——> json數據格式 ——> 其餘語言的數據類型class

注意: 一、json中全部字符串都是雙引號import

​ 二、元組比較特殊,python中的元組,轉換成json數據,內部會將元組轉成列表coding

​ 三、set(集合)不能轉換成json數據

如何使用

import json

json.dumps():序列化:python數據類型——》json——》字符串

json.loads():反序列化:字符串——》json——》python數據類型

json.dump():序列化:python數據類型——》json——》字符串——》json文件中

json.load():反序列化:json文件——》字符串——》json——》python數據類型

所以:dump和load使用更加方便直接存取文件中,保存json數據時必定要以.json文件後綴

一、dumps與loads

import json
l1 = ['張全蛋', '李二蛋']
# 序列化,將本語言的類型轉換成json類型進而轉換成字符串
# ensure_ascii默認的是True,轉換成字符串後是bytes類型
json_str = json.dumps(l1,ensure_ascii=False)
print(json_str)
print(type(json_str)) # <class 'str'>
# 將轉換後的數據反序列化成本語言的數據類型
json_list = json.loads(json_str)
print(json_list)
print(type(json_list)) # <class 'list'>
#元組會被轉換成列表 
t1 = (1,2,'shen')
# 序列化
json_str = json.dumps(t1,ensure_ascii=False)
print(json_str)
print(type(json_str)) # <class 'str'>
# 反序列化
json_tuple = json.loads(json_str)
print(json_tuple) # [1, 2, 'shen']
print(type(json_tuple)) # <class 'list'>

二、dump和load

# 用dumps和loads存讀文件
dic = {'name': '沈', 'pwd': '123456'}
# 序列化轉換成字符串寫入文件中
json_str = json.dumps(dic,ensure_ascii=False)
with open('user.json','w',encoding='utf-8') as f:
    f.write(json_str)
# 反序列化
json_dict = json.loads(json_str)
with open('user.json','r',encoding='utf-8') as f:
    print(f.read())
# 用dump和load存取文件
dic = {'name': '沈', 'pwd': '123456'}
with open('user2.json', 'w', encoding='utf-8') as f:
    # json.dump(dic,f) # 存到文件中是bytes類型
    json.dump(dic,f,ensure_ascii=False) # 轉換bytes類型
with open('user2.json','r',encoding='utf-8') as f:
    print(json.load(f))

用dump和load能夠直接寫入文件和讀取文件,不須要先轉換成json字符串在寫入和讀取文件

相關文章
相關標籤/搜索