JSON資料

松鼠q發表於2024-10-03

JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,易於人閱讀和編寫,同時也易於機器解析和生成。它基於JavaScript的一個子集,但JSON是獨立於語言的,很多程式語言都支援JSON格式的資料的生成和解析。

JSON的特點包括:

  • 文字格式: JSON是純文字,可以被任何程式語言讀取和生成。
  • 結構簡單: 使用鍵值對儲存資料,結構清晰,易於理解。
  • 易於解析: 大多數程式語言都有現成的庫來解析JSON資料,將其轉換為本地物件。
  • 易於傳輸: 由於是文字格式,JSON資料可以很容易地透過HTTP等協議傳輸。
  • 語言無關: 雖然JSON源自JavaScript,但它是獨立於語言的,幾乎所有的現代程式語言都支援JSON。

JSON資料的基本型別包括:

  • 字串: 用雙引號括起來的文字。
  • 數字: 沒有引號的數值。
  • 布林值: TrueFalse
  • 陣列: 用方括號括起來的值序列,例如["apple", "banana", "cherry"]
  • 物件: 用大括號括起來的鍵值對集合,例如{"name": "Lilian", "age": 21}
  • null: 表示空值。

JSON物件示例:

{
    "name": "Lilian",
    "age": 21,
    "isEmployed": False,
    "skills": ["math", "music", "web crawler"],
    "address": {
        "street": "Num.360, JinNiu District",
        "city": "CD",
        "province": "SC"
    }
}

python中有自帶的json標準庫能處理json資料,提供的基本功能有:

  1. 序列化(編碼): 將python物件轉換為JSON格式的字串。
    1. json.dumps(obj): 將python物件obj轉換成json字串。
    2. json.dump(obj): 將python物件obj轉換為json字串並寫入到檔案中。
  2. 反序列化(解碼): 將JSON格式的字串轉換回python物件。
    1. json.loads(json_str): 將JSON字串json_str轉換為python物件。
    2. json.load(file): 從檔案讀取JSON字串並將其轉換為python物件。

示例程式碼:

import json


# python中JSON物件會被解析成字典格式,陣列被解析為列表,字串解析為字串str,數字解析為整數int或浮點數float,布林值解析為布林值,null解析為None
# 字串中的key需要加上雙引號,不能用單引號
str_ = '{"name": "戰狼3"}'
print(type(str_))  # <class 'str'>
print('--------str to obj---------')
obj = json.loads(str_)
print(type(obj))  # <class 'dict'>


print('--------obj to str---------')
tmp_str = json.dumps(obj, ensure_ascii=False)
print(tmp_str)  # {"name": "戰狼3"}
print(type(tmp_str))  # <class 'str'>


print('---------obj to file---------')
json.dump(obj, open('json.txt', 'w', encoding='utf8'), ensure_ascii=False)


print('---------file to obj---------')
obj2 = json.load(open('json.txt', 'r', encoding='utf8'))
print(obj2)  # {"name": "戰狼3"}
print(type(obj2))  # <class 'dict'>

除了基本功能,json還支援自定義編碼器和解碼器來處理特定型別的轉換,JSONDecoder類用於自定義解碼JSON資料,JSONEncoder類用於自定義編碼python物件到JSON資料。

還提供了異常處理機制: json.JSONDecodeError。

詳細資訊檢視python官網:https://docs.python.org/3.12/library/json.html#basic-usage

json線上解析網站:http://www.json.cn/#

相關文章