目次
1. Ano ang JSON? (Batayang Kaalaman)
Pangkalahatang Ideya ng JSON
Ang JSON(JavaScript Object Notation)ay isang format ng datos na madalas gamitin sa komunikasyon sa pagitan ng kliyente at server. Ito ay magaan, madaling basahin, at may simpleng estruktura, kaya malawakang ginagamit sa mga web application at mobile application. Ang JSON ay nasa anyong teksto, at madaling hawakan sa anumang wika, kaya napaka‑versatile nito.Pangunahing Estruktura ng JSON
Ang JSON ay naglalarawan ng datos gamit ang pares ng susi at halaga. Halimbawa, narito ang isang estruktura ng JSON:{
"pangalan": "佐藤",
"edad": 30,
"libangan": ["pagbabasa", "pelikula"]
}
Sa halimbawang ito, ang pangalan
ay isang string, ang edad
ay isang numero, at ang libangan
ay isang array. Dahil simple ang estruktura at mataas ang nababasa, napakaepektibo ang palitan ng datos.Mga Bentahe ng JSON
- Magaan at Epektibo: Bilang isang text format, maliit ang dami ng data na ipinapadala kaya nababawasan ang load sa network.
- Mataas na Pagkakatugma: Sinusuportahan ng halos lahat ng programming language, at maaaring magamit sa maraming platform.
- Madaling I‑parse: Madali ang pagbabasa at pagsulat ng datos, at lalo na sa API communication ay isang makapangyarihang tool.
2. Pag-manipula ng JSON sa Python (Pangunahing Bahagi)
Python json
na module
Sa Python, maaaring madaling magbasa at magsulat ng JSON data gamit ang json
module. Halimbawa, upang i-convert ang JSON data sa Python dictionary, gamitin ang function na json.loads()
.import json
json_data = '{"pangalan": "Sato", "edad": 30}'
python_obj = json.loads(json_data)
print(python_obj) # {'pangalan': 'Sato', 'edad': 30}
Sa kabaligtaran, upang i-convert ang Python object sa JSON format, gamitin ang json.dumps()
.python_obj = {"pangalan": "Sato", "edad": 30}
json_data = json.dumps(python_obj, ensure_ascii=False)
print(json_data) # {"pangalan": "Sato", "edad": 30}
Pagbabasa at Pagsusulat ng File
Maaari ring magbasa ng JSON data mula sa file o magsulat nito sa file.# Magbasa mula sa file
with open('data.json', 'r') as f:
data = json.load(f)
# Sumulat sa file
with open('data.json', 'w') as f:
json.dump(python_obj, f, ensure_ascii=False)
3. JSON na komunikasyon sa Python (praktikal na bahagi)
Komunikasyon sa API gamit ang requests module
requests
module, madaling makapagpadala at makatanggap ng JSON data sa pamamagitan ng API. Narito ang halimbawa ng pagpapadala ng JSON gamit ang POST request at pagtanggap ng tugon.Pagpapadala ng JSON data gamit ang POST request
import requests
url = 'https://example.com/api'
data = {'pangalan': 'Sato', 'edad': 30}
response = requests.post(url, json=data)
json_response = response.json()
print(json_response)
Pagtanggap ng JSON data gamit ang GET request
Madali rin kunin ang JSON data mula sa API gamit ang GET request.response = requests.get('https://example.com/api/user/1')
data = response.json()
print(data)
4. Paghawak ng Error at Mga Pinakamahusay na Kasanayan
Paghawak ng Error sa API na Komunikasyon
Kapag nagkaroon ng error habang nagkokomunika sa API, mahalagang magsagawa ng tamang paghawak ng error. Sa halimbawang ito, kinukuha ang mga exception tulad ng network error at timeout.try:
response = requests.post(url, json=data)
response.raise_for_status()
except requests.exceptions.HTTPError as errh:
print("Http Error:", errh)
except requests.exceptions.ConnectionError as errc:
print("Error Connecting:", errc)
except requests.exceptions.Timeout as errt:
print("Timeout Error:", errt)
except requests.exceptions.RequestException as err:
print("OOps: Something Else", err)
Pagproseso ng Retry
Kapag hindi matatag ang network, mahalaga ring magpatupad ng pagproseso ng retry. Sarequests
module, madaling maipatupad ang retry gamit ang Retry
class.from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
response = session.get(url)
5. Pagpapatunay ng JSON
Pagpapatunay gamit ang jsonschema
Upang matiyak kung ang JSON data na natatanggap mula sa API ay nasa inaasahang format, maaari mong gamitin ang library najsonschema
upang magsagawa ng pagpapatunay.from jsonschema import validate, ValidationError
schema = {
"type": "object",
"properties": {
"pangalan": {"type": "string"},
"edad": {"type": "number"}
},
"required": ["pangalan", "edad"]
}
json_data = {"pangalan": "佐藤", "edad": 30}
try:
validate(instance=json_data, schema=schema)
print("JSON is valid")
except ValidationError as e:
print("Validation Error:", e)
Maaari rin nitong suportahan ang mga kumplikadong schema at mga nested na object, na nagbibigay-daan upang masiguro ang wastong pagsusuri ng data mula sa API.6. Mga pinakamahusay na kasanayan sa seguridad
Pamamahala ng API Key
Inirerekomenda na huwag i-hardcode ang API key sa source code, at imaneho ito gamit ang mga environment variable o katulad nito. Sa ganitong paraan, mababawasan ang panganib sa seguridad.import os
api_key = os.getenv('API_KEY')
Sanitasyon ng Data
Sa pamamagitan ng pagsasagawa ng tamang sanitasyon sa input data mula sa user bago ito ipadala sa server, mapoprotektahan mo laban sa SQL injection at cross-site scripting (XSS).from html import escape
safe_data = escape(user_input)