JSON教程(純粹筆記)
阿新 • • 發佈:2020-11-13
JSON教程
JSON:JavaScript Object Notation(JavaScript物件表示法)
JSON是儲存和交換文字資訊的語法,型別XML。
JSON比XML更小,更快,更易解析。
json例項
{ "sites": [ { "name":"菜鳥教程" , "url":"www.runoob.com" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ] }
這個site物件包含3個站點記錄(物件)的陣列。
一、什麼是json
- JSON指的是JavaScript物件表示法
- JSON是輕量級的文字資料交換格式
- JSON獨立於語言:雖然JSON使用javascript語法來描述資料物件,但JSON仍然獨立於語言和平臺。JSON直譯器和JSON庫支援許多不同的程式語言。目前非常多的程式語言都支援JSON。比如Python,PHP等
二、JSON簡介
與 XML 相同之處
- JSON 是純文字
- JSON 具有"自我描述性"(人類可讀)
- JSON 具有層級結構(值中存在值)
- JSON 可通過 JavaScript 進行解析
- JSON 資料可使用 AJAX 進行傳輸
與 XML 不同之處
- 沒有結束標籤
- 更短
- 讀寫的速度更快
- 能夠使用內建的 JavaScript eval() 方法進行解析
- 使用陣列
- 不使用保留字
為什麼使用 JSON?
對於 AJAX 應用程式來說,JSON 比 XML 更快更易使用:
使用 XML
- 讀取 XML 文件
- 使用 XML DOM 來迴圈遍歷文件
- 讀取值並存儲在變數中
使用 JSON
- 讀取 JSON 字串
- 用 eval() 處理 JSON 字串
三、JSON語法
JSON語法規則
- 資料在 鍵/值 對中
- 資料由逗號分隔
- 大括號
{}
表示物件 - 中括號
[]
表示陣列,陣列可以包含多個物件
JSON鍵值對
書寫格式
key: value
例如:看到沒,字串要用雙引號包起來
"name": "tom"
JSON值可以是
- 數字(包含整數、浮點數)
- 字串(要用雙引號包起來)
- 邏輯值(true或false)
- 陣列(中括號裡面)
- 物件(大括號裡面)
- null
JSON值為數字
{"age": 18}
{"height": 175.8}
JSON值為物件
json物件寫在大括號裡面
{
"age": 18,
"height": 175.8
}
JSON值為陣列
json陣列寫在中括號裡面
{
"美國大選":[
{
"name": "特朗普",
"票數": 214
},
{
"name": "拜登",
"票數": 264
}
]
}
JSON布林值
可以是true或者false
{"flag": true}
JSON null
{"name": null}
JSON檔案
- JSON檔案的檔案型別
.json
- JSON文字的MIME型別
application/json
四、JSON物件
物件語法
{
"name": "mahuateng",
"age": 18
}
- JSON物件在大括號中書寫
- 物件可以包含多個 鍵值對
- key必須是字串,且必須使用雙引號引起來;value可以是字串,數字,物件,陣列,布林值,null
- key和value必須使用冒號分隔
- 每個key/value之間以逗號分隔
python訪問物件的值
其實就是python裡面的字典,只不過python裡面字串可以用雙引號可以用單引號而已
student = {"name": "mahuateng", "age": 18}
student["name"]
#輸出
'mahuateng'
python迴圈物件(遍歷字典)
#遍歷key
student = {"name": "mahuateng", "age": 18}
for item in student:
print(item)
#遍歷value
student = {"name": "mahuateng", "age": 18}
for item in student:
print (student[item])
#或者
student = {"name": "mahuateng", "age": 18}
for k,v in student.items():
print (k,v)
修改
student = {"name": "mahuateng", "age": 18}
student["age"] = 20
刪除
student = {"name": "mahuateng", "age": 18}
student.pop("age")
五、JSON陣列
{
"name":"網站",
"num":3,
"sites":[ "Google", "Runoob", "Taobao" ]
}
python遍歷列表
student = {
"name":"網站",
"num":3,
"sites":[ "Google", "Runoob", "Taobao" ]
}
for item in student["sites"]:
print(item)
刪除
fruits = ["apple", "orange", "grape", "kiwi", "mongo", "pineapple", "durian"]
fruits.remove("grape")
六、JSON格式化校驗
七、python3 JSON資料解析
- json.dumps() 對資料進行編碼
- json.loads() 對資料進行解碼
Python 編碼為 JSON 型別轉換對應表:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float, int- & float-derived Enums | number |
True | true |
False | false |
None | null |
JSON 解碼為 Python 型別轉換對應表:
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
編碼
import json
# Python 字典型別轉換為 JSON 物件
data = {
'no' : 1,
'name' : 'Runoob',
'url' : 'http://www.runoob.com'
}
json_str = json.dumps(data)
print ("Python 原始資料:", repr(data))
print ("JSON 物件:", json_str)
#輸出
Python 原始資料: {'no': 1, 'name': 'Runoob', 'url': 'http://www.runoob.com'}
JSON 物件: {"no": 1, "name": "Runoob", "url": "http://www.runoob.com"}
解碼
import json
# Python 字典型別轉換為 JSON 物件
data1 = {
'no' : 1,
'name' : 'Runoob',
'url' : 'http://www.runoob.com'
}
json_str = json.dumps(data1)
print ("Python 原始資料:", repr(data1))
print ("JSON 物件:", json_str)
#輸出
Python 原始資料: {'no': 1, 'name': 'Runoob', 'url': 'http://www.runoob.com'}
JSON 物件: {"no": 1, "name": "Runoob", "url": "http://www.runoob.com"}
python命令列美化json
喜歡線上工具的話可以使用線上工具
[root@david SetMachineTag]$ echo '{"json": "obj"}' | python3 -m json.tool
{
"json": "obj"
}
八、js前端加密
javascript程式碼加密,咱也不懂
線上加密工具:https://www.jsjiami.com/