詳細解讀python操作json文件的詳細
json轉化為python表示反序列化
python轉化為json表示為序列化
json是python的內置模塊,不需要安裝
json支持的格式:
Json | Python |
對象(object) | 字典(dict) |
數組(array) | 列表(list) |
字符串(string) | 字符串(str) |
整數(int) | 整數(int) |
實數(float) | 實數(float) |
true | True |
false | False |
null | None |
代碼操作
1.json轉化為python
json提供的兩個函數支持json字符串反序列化為一個python對象
json.loads(s)
其中s表示字符串
import json str_json = '{"name":"張三","age":24}' res = json.loads(str_json) print(res, type(res)) #{'name': '張三', 'age': 24} <class 'dict'>
json.load(fb)
fb:表示為文件對象test.json
test.json
{ "name":"張三", "age":24, "friends": [{ "name": "李四", "age": 23 }, { "name": "王麻子", "age": 24 }], "hobby": ["玩遊戲","看電影"] }
import json with open('test.json', 'r', encoding='utf-8') as f: res = json.load(f) print(res, type(res)) # {'name': '張三', 'age': 24, 'friends': [{'name': '李四', 'age': 23}, {'name': '王麻子', 'age': 24}], 'hobby': ['玩遊戲', '看電影']} <class 'dict'>
json字符串一般不會單獨出現
json.loads('"test"') #'test'
一般會放在字典或者列表中
json.loads('["test1","test2","test3"]') #['test1','test2','test3']
2. python序列化為json
json.dumps(obj,ensure_ascii=True,indent=None,sort_keys=False)
obj
:表示為python 對象ensure_ascii
: 默認為 True,輸出保證將所有輸入的非 ASCII 字符轉義。如果 ensure_ascii 是 False,這些字符會原樣輸出。indent
:一個非負整數或者字符串,JSON 數組元素和對象成員會被美化輸出為該值指定的縮進等級。如果縮進等級為零、負數或者 “”,則隻會添加換行符。None(默認值)選擇最緊湊的表達。使用一個正整數會讓每一層縮進同樣數量的空格。如果 indent 是一個字符串(比如 “\t”),那個字符串會被用於縮進每一層。sort_keys
:為 True(more 為 False),表示字典的輸出會以鍵的順序排序。
import json data = { "name":"張三", "age":24, "friends": [{ "name": "李四", "age": 23 }, { "name": "王麻子", "age": 24 }], "hobby": ["玩遊戲","看電影"] } res = json.dumps(data,ensure_ascii=False,indent=2, ) print(res, type(res))
打印的結果為
{
“name”: “張三”,
“age”: 24,
“friends”: [
{
“name”: “李四”,
“age”: 23
},
{
“name”: “王麻子”,
“age”: 24
}
],
“hobby”: [
“玩遊戲”,
“看電影”
]
} <class ‘str’>
json.dump(obj,fb,ensure_ascii=True,indent=None,sort_keys=False)
obj
:表示為python對象fb
:表示為文本寫打開的文件對象
import json data = { "name":"張三", "age":24, "friends": [{ "name": "李四", "age": 23 }, { "name": "王麻子", "age": 24 }], "hobby": ["玩遊戲","看電影"] } with open('test1.json', 'w', encoding='utf-8') as f: json.dump(data, fp=f, ensure_ascii=False, indent=2)
寫入的結果為
test1.json
{ "name": "張三", "age": 24, "friends": [ { "name": "李四", "age": 23 }, { "name": "王麻子", "age": 24 } ], "hobby": [ "玩遊戲", "看電影" ] }
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- Python序列化模塊之pickle與json詳解
- Python常用標準庫詳解(pickle序列化和JSON序列化)
- Python操作JSON實現網絡數據交換
- Python中json.load()和json.loads()有哪些區別
- Python中json.dumps()函數的使用解析