json
json 介紹
{
"key": value,
"key": value
}
key為字串,用「雙引號」包起來。
value可以為:
- 數字
- 字串
- list
- json 陣列
- json 物件
json = {
"name": "Cici",
"age": 20,
"hobby": ["Dance", "Sign", "Reading"],
"address": {"國家": "台灣", "郵遞區號": 001, "address": "xxxxx"}
}
Json Array
[{}, {}, {}]
[
{"name": "Mary", "age": 10},
{"name": "Bill", "age": 20},
]
json 與 dict差別
dict的key是用單引號,json的key是雙引號。
json的字串都是用雙引號,單引號在python中是字串,例其它語言如java, c++ 是字元。
dict = {'name': 'Cici', 'age': 20, 'gender': '女'}
json = {"name": "Cici", "age": 20, "gender": "女"}
json.dumps() 與 json.loads() 語法
json.dumps() 語法
json.dumps()將dict或list轉成Json字串,
result = json.dumps(dict 或 list, ensure_ascii = False)
- 參數1,dict或list。
- 參數2,ensure_ascii = False 確保中文能正常顯示。
- 傳回值為Json字串。
json.loads() 語法
json.loads()將Json轉成dict或list。
result = json.loads(Json字串)
- 參數1,Json字串。
- 傳回值為dict或list。
json.dumps()
1
2
3
4
5
6
7
8
9
import json
d = {
"name": "Cici",
"age": 20,
"gender": "女"
}
s = json.dumps(d, ensure_ascii=False)
print(s)
{"name": "Cici", "age": 20, "gender": "女"}
json.loads()
使用單引號,把json字串包起來。
1
2
3
4
import json
json_str = '{"name": "Cici", "age": 20, "gender": "女"}'
res_dict = json.loads(json_str)
print(res_dict)
{'name': 'Cici', 'age': 20, 'gender': '女'}
json 檔案讀與寫
- dump 把dict 轉成 json格式 存入檔案
- load 把 json格式 轉成 dict
把dict obj 轉成 json格式 存入檔案,第二個參數有f
obj = {
"name": "王大明",
"age": 18,
"gender": "male",
}
json.dump(obj, f)
把檔案裡的json格式轉成dict,以下參數有f
obj = json.load(f)
json 寫入檔案
indent 為縮排空格
1
2
3
4
5
6
7
8
9
import json
obj = {
"name": "王大明",
"age": 18,
"gender": "male",
}
with open("data/session.json", "w", encoding="utf-8") as f:
json.dump(obj, f, ensure_ascii=False, indent=2)
{
"name": "王大明",
"age": 18,
"gender": "male"
}
讀取json檔案
1
2
3
4
5
import json
with open("data/session.json", "r", encoding="utf-8") as f:
obj = json.load(f)
print(obj)
{'name': '王大明', 'age': 18, 'gender': 'male'}
物件格式是dict
1
2
3
4
import json
with open("data/session.json", "r", encoding="utf-8") as f:
obj = json.load(f)
print(type(obj))
<class 'dict'>