詳細解讀python操作json文件的詳細
json轉化為python表示反序列化
python轉化為json表示為序列化
json是python的內置模塊,不需要安裝
json支持的格式:
| Json | Python |
| 對象(object) | 字典(dict) |
| 數(shù)組(array) | 列表(list) |
| 字符串(string) | 字符串(str) |
| 整數(shù)(int) | 整數(shù)(int) |
| 實數(shù)(float) | 實數(shù)(float) |
| true | True |
| false | False |
| null | None |
代碼操作
1.json轉化為python
json提供的兩個函數(shù)支持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字符串一般不會單獨出現(xiàn)
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:一個非負整數(shù)或者字符串,JSON 數(shù)組元素和對象成員會被美化輸出為該值指定的縮進等級。如果縮進等級為零、負數(shù)或者 “”,則只會添加換行符。None(默認值)選擇最緊湊的表達。使用一個正整數(shù)會讓每一層縮進同樣數(shù)量的空格。如果?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": [
"玩游戲",
"看電影"
]
}
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!
相關文章
pycharm部署、配置anaconda環(huán)境的教程
PyCharm是一款很好用很流行的python編輯器。Anaconda是專注于數(shù)據(jù)分析的Python發(fā)行版本,包含了conda、Python等190多個科學包及其依賴項,這篇文章主要介紹了pycharm部署、配置anaconda環(huán)境的教程,需要的朋友可以參考下2020-03-03
Python第三方庫xlrd/xlwt的安裝與讀寫Excel表格
最近開始學習python,想做做簡單的自動化測試,需要讀寫excel,于是就接觸到了Python的第三方庫xlrd和xlwt,下面這篇文章就給大家主要介紹了Python中第三方庫xlrd/xlwt的安裝與讀寫Excel表格的方法,需要的朋友可以參考借鑒。2017-01-01
查找python項目依賴并生成requirements.txt的方法
今天小編就為大家分享一篇查找python項目依賴并生成requirements.txt的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Python數(shù)據(jù)可視化 pyecharts實現(xiàn)各種統(tǒng)計圖表過程詳解
這篇文章主要介紹了Python數(shù)據(jù)可視化 pyecharts實現(xiàn)各種統(tǒng)計圖表過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08
Pygame游戲開發(fā)之太空射擊實戰(zhàn)子彈與碰撞處理篇
相信大多數(shù)8090后都玩過太空射擊游戲,在過去游戲不多的年代太空射擊自然屬于經典好玩的一款了,今天我們來自己動手實現(xiàn)它,在編寫學習中回顧過往展望未來,下面開始講解子彈與碰撞處理,在本課中,我們將添加玩家與敵人之間的碰撞,以及添加供玩家射擊的子彈2022-08-08

