1. 程式人生 > 實用技巧 >JSON教程(純粹筆記)

JSON教程(純粹筆記)

JSON教程

https://www.runoob.com/json/json-syntax.html

https://www.json.org/json-zh.html

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格式化校驗

https://www.bejson.com/

七、python3 JSON資料解析

參考:https://www.runoob.com/python3/python3-json.html

參考:https://docs.python.org/zh-cn/3.8/library/json.html

  • 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/