一、定義
-
JSON 是一種數據格式
-
使用 javaScript (Java 死鬼破特)對象表示法
二、特點
1、JSON 與 XML格式數據的區別

====== 區別
- 兩種格式的數據,都是跨語言,跨平台
- c、c++、java、php、python、go 等都能處理這兩種格式
- Windows、Linux、Unix都能承載這兩種格式
- json 更為清晰,冗余更少,更輕量級,傳輸效率更高
- xml 常常導致復雜的代碼,極低的開發效率
- 對於大多數 web 應用來說,根本不需要復雜的 xml 來傳輸數據
2、json 結構
- 對象結構:鍵值對
- json 格式的數據,在 python 中是以字符串或者字節類來呈現
- json 格式數據,所有的 key 都是用“雙引號”來包裹的
- “單引號”是不可以的
- value 數字可以不用雙引號包裹
- 空值一定是 小寫的 null
a = { "key1": 12, "key2": "value" }
- 數組結構-嵌套字典的列表
b = [ { "key1": "value1", "key2": "value2" }, { "key3": "value3", "key4": "value4" }, ]
3、注意事項
- json 格式的數據,在 python 中以字符串形式呈現
- json 中的空為 null
- json 中除空和數字外,所有的 key 和 value 都是字符串,且一定要以雙引號括起來
三、json數據格式與Python字典互相轉換 ------ 為了獲取數據方便
看到 null 是 json 格式字符串,因為使用 eval 進行轉換會報錯(報未定義);否則是 字典類型字符串
沒有 null 可以是 json 格式也可以是 字典類型字符串
- loads()和load():
- loads() 是直接讀取json格式的數據,並轉換為字典型數據類型
- load() 是讀取json文件,將從json文件對象中獲取的json數據轉換為字典型數據類型
- dumps()和dump():
- dumps() 是將字典型數據類型直接轉換為json數據格式
- dump() 是將字典型數據類型轉換為json數據格式后存放到json格式文件中
- dumps() 是將字典型數據類型直接轉換為json數據格式
json.loads :(簍子)-- 將 json 格式的數據轉化為-----Python中的字典類型
import json
# json格式的字符串 -- 字符串要寫在同一行,外層使用單引號
data_json = '{"msg": "登錄成功", "code": "10001", "data": null, "status": 1}'
# 將 json 格式的數據轉化為 Python 中的字典類型 # 會將 json 格式空值null轉化為 Python 中字典類型的空值 None
data_dict = json.loads(data_json, encoding='utf-8') print(data_dict) # 結果:
{'msg': '登錄成功', 'code': '10001', 'data': None, 'status': 1}
json中的.dumps : (當慕斯)Python中字典dict類型轉化為-------json格式的數據
# 將python中字典類型轉化為json格式的數據 # 會將 Python 中字典類型的空值 None 轉換為 json 格式的空值 null
one_dict = {'name': '麥穗', "age": 18, "money": None} # 記憶:宕機 --> dj(dict -- json) # ensure_ascii=True 默認為 True 遇到中文進行編碼,False 不進行編碼
one_json = json.dumps(one_dict, ensure_ascii=False) print(one_json) # 結果:{"name": "麥穗", "age": 18, "money": null}
json.load() :(樓的)讀取 json 文件中的 json 數據並轉換為 字典 型的數據類型
import json # 創建json格式的TXT文件, # 內容為:{"msg": "登錄成功", "code": "10001", "data": null, "status": 1}
# 第一種情況,讀取json文件中的json數據並轉換為字典型的數據類型 # mode 默認為="r",encoding 指定編碼
with open("json_text.txt", encoding="utf-8") as file: one_dict = json.load(file) print(one_dict) # 結果:{'msg': '登錄成功', 'code': '10001', 'data': None, 'status': 1}
json.dump() :(當潑)將字典數據類型轉換為 json 格式數據並 存儲 到 json 格式的文件中
# 第二種,將字典數據類型轉換為 json 格式數據並存儲到json格式的文件中
two_dict = [{"one": {"name": "流年", "age": 20, "love": None}}, {"two": {"name": "阿登", "age": 25, "love": True}}] # 使用上下文管理器 with # ensure_ascii(恩數額兒_安斯k) 默認True,會進行編碼;為如果是中文不進行編碼使用 False # indent (in den 特) 空兩格美化
with open("write_json.txt", mode="w", encoding="utf-8") as one_file: json.dump(two_dict, one_file, ensure_ascii=False, indent=2) # 結果:
[ { "one": { "name": "流年", "age": 20, "love": null } }, { "two": { "name": "阿登", "age": 25, "love": true } } ]
json 模塊封裝,看看大佬怎么封裝的,轉載自:https://www.cnblogs.com/xiaogongjin/p/11400475.html
import json class HandleJson: ''' 定義一個json格式數據處理類 ''' @staticmethod def loads_data(data): ''' 將json數據格式的數據轉換為字典型的數據類型 :param data: json格式字符串 :return: 字典數據類型 ''' dict_ison = json.loads(data) return dict_ison @staticmethod def load_data(filename): ''' 讀取json文件中的json數據並轉換為字典型的數據類型 :param filename:json文件名 :return:字典數據類型 ''' with open(filename, mode='r', encoding='utf-8') as fp: dict_file = json.load(fp) return dict_file @staticmethod def dumps_data(data): ''' 將字典數據類型轉換為json格式類型數據 :param data: 字典數據類型 :return: json格式字符串 ''' json_dict = json.dumps(data, ensure_ascii=False) return json_dict @staticmethod def dump(data, filename): ''' 將字典數據類型轉換為json格式數據並存儲到json格式的文件中 :param data: 字典數據類型 :param filename: json文件名 :return: json格式文件 ''' with open(filename, mode='w', encoding='utf-8') as fp: json.dump(data, fp)
*******請大家尊重原創,如要轉載,請注明出處:轉載自:https://www.cnblogs.com/shouhu/ 謝謝!!*******
