python3 json文件_Python3读写JSON文件
JSON簡介
JSON(JavaScript Object Notation)即JavaScript對象表示法,一種輕量級,通用的文本數(shù)據(jù)格式。 JSON語法支持對象(Object),數(shù)組(Array),字符串,數(shù)字(int/float)以及true/false和null。 JSON擁有嚴(yán)格的格式,主要格式如下:
只能用雙引號,不能用單引號
元素之間用逗號隔開,最后一個元素不能有逗號
不支持注釋
中文等特殊字符傳輸時應(yīng)確保轉(zhuǎn)為ASCII碼(\uXXX格式)
支持多層嵌套Object或Array
示例格式,文件demo.json:
{
"name": "Cactus",
"age": 18,
"skills": ["Python", "Java", "Go", "NodeJS"],
"has_blog": true,
"gf": null
}
JSON與Python數(shù)據(jù)類型的對應(yīng)關(guān)系
JSON和Python中的字典等類型一一對應(yīng):
JSON
Python
Object
字典
Array
列表
字符串
字符串
數(shù)字
數(shù)字(int/float)
true/false
True/False
null
Null
注意:在Python中, JSON一般指符合JSON語法格式的字符串,實際上是一個字符串,單行或者多行。
JSON字符串與Python字典的相互轉(zhuǎn)換
為什么要相互轉(zhuǎn)換,JSON是字符串,方便存儲傳輸,不方便提取值;字典是內(nèi)存中的數(shù)據(jù)結(jié)構(gòu),取值方便,不方便傳輸和存儲
使用Python自帶的json包可以完成字典與JSON字符串的相互轉(zhuǎn)換
json.dumps(字典):將字典轉(zhuǎn)為JSON字符串
json.loads(JSON字符串):將JSON字符串轉(zhuǎn)為字典,如果字符串不是合法的JSON格式,會報JSONDecodeError
示例1,字典轉(zhuǎn)JSON字符串
import json
dict_var = {
'name': 'Cactus',
'age': 18,
'skills': ['Python', 'Java', 'Go', 'NodeJS'],
'has_blog': True,
'gf': None
}
print(json.dumps(dict_var))
print(json.dumps(dict_var, indent=2,sort_keys=True, ensure_ascii=False))
json.dumps()支持參數(shù),indent為多行縮進空格數(shù),sort_keys為是否按鍵排序,ensure_ascii=False為不確保ascii,及不將中文等特殊字符轉(zhuǎn)為\uXXX等 顯示結(jié)果:
{"name": "Cactus", "age": 18, "skills": ["Python", "Java", "Go", "NodeJS"], "has_blog": true, "gf": null}
{
"age": 18,
"gf": null,
"has_blog": true,
"name": "Cactus",
"skills": [
"Python",
"Java",
"Go",
"NodeJS"
]
}
示例2,JSON字符串->字典
import json
json_str = '''{
"name": "Cactus",
"age": 18,
"skills": ["Python", "Java", "Go", "NodeJS"],
"has_blog": true,
"gf": null
}'''
print(json.loads(json_str))
顯示結(jié)果:
{'name': 'Cactus', 'age': 18, 'skills': ['Python', 'Java', 'Go', 'NodeJS'], 'has_blog': True, 'gf': None}
JSON文件與字典的相互轉(zhuǎn)換
另外也可以直接將字典保存為JSON文件或從JSON文件轉(zhuǎn)為字典
json.dump(字典, f):將字典轉(zhuǎn)為JSON文件(句柄)
json.loads(f):將打開的JSON文件句柄轉(zhuǎn)為字典
示例3:字典->JSON文件
import json
dict_var = {
'name': 'Cactus',
'age': 18,
'skills': ['Python', 'Java', 'Go', 'NodeJS'],
'has_blog': True,
'gf': None
}
with open("demo2.json", "w", encoding='utf-8') as f:
# json.dump(dict_var, f) # 寫為一行
json.dump(dict_var, f,indent=2,sort_keys=True, ensure_ascii=False) # 寫為多行
文件demo2.json結(jié)果:
{
"age": 18,
"gf": null,
"has_blog": true,
"name": "Cactus",
"skills": [
"Python",
"Java",
"Go",
"NodeJS"
]
}
示例4: JSON文件->字典
import json
with open("demo2.json", encoding="utf-8") as f:
data = json.load(f)
pritn(data)
顯示結(jié)果:
{'age': 18, 'gf': None, 'has_blog': True, 'name': 'Cactus', 'skills': ['Python', 'Java', 'Go', 'NodeJS']}
解析復(fù)雜嵌套JSON格式,請使用JSONPath
總結(jié)
以上是生活随笔為你收集整理的python3 json文件_Python3读写JSON文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器小程序servlet的使用
- 下一篇: 文本分类--普通分类