อัปเดตล่าสุด April 29, 2023
สรุป JSON แบบกระชับ
ตัวอย่างข้อมูล Covid-19 ของกรมควบคุมโรค กระทรวงสาธารณสุข
covid19.json
{
"Confirmed": 3818,
"Recovered": 3639,
"Hospitalized": 120,
"Deaths": 59,
"NewConfirmed": 8,
"NewRecovered": 16,
"NewHospitalized": -8,
"NewDeaths": 0,
"UpdateDate": "06/11/2020 11:09",
"Source": "https://covid19.th-stat.com/",
"DevBy": "https://www.kidkarnmai.com/",
"SeverBy": "https://smilehost.asia/"
}
ตัวอย่างการนำข้อมูล JSON มาใช้งานแสดงผลผ่านหน้าเว็บ
ตัวอย่างการดึง API ที่อยู่ในรูปแบบของ JSON มาแสดงผลผ่านหน้าเว็บ
สรุป Dictionary แบบกระชับ
Python มี Built-in module ที่ถูกสร้างมาเพื่อให้สามารถใช้งานและจัดการเกี่ยวกับ JSON มาให้เรียบร้อย โดยสามารถใช้งานได้ด้วยการอิมพอร์ตโมดูลที่มีชื่อว่า json เข้ามาใช้งาน
import json
ทำการสร้างตัวแปร obj เพื่อเก็บออปเจคท์ จากนั้นใช้คำสั่งแสดงผล print(type(obj)) เพื่อแสดงผลประเภทของข้อมูล ซึ่งแน่นอนว่าจะได้เป็น Dictionary
obj = {'name': 'sonny',
'age': 28}
print(type(obj))
Output
<class 'dict'>
ตารางเปรียบเทียบการแปลง
Python | JSON |
dict | Object |
tuple | Array |
list | Array |
int | Number |
float | Number |
str | String |
True | true |
False | false |
เพิ่มเติม: ขาดไปอีก 1 คือ
กระบวนการในการแปลง Python Object ไปเป็น JSON ฟอร์แมต เพื่อทำการส่งต่อข้อมูล (Transmit) หรือเรียกอีกอย่างหนึ่งในทำนองของการ Encoding
กระบวนการในการแปลง JSON Object ให้อยู่ในรูปของชนิดข้อมูล (Data Type) แบบ dict ของภาษาไพธอน เพื่อทำการรับข้อมูล (Receive) เข้ามาเพื่อใช้งานต่อไป
คือการแปลง Python Object (Dict) ไปเป็น JSON String หรือ Object ทำได้โดยเรียกใช้เมธอด json.dumps()
parameters และ arguments (จาก Python Documentation)
json.dumps(obj, *, skipkeys=False,
ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None,
indent=None, separators=None,
default=None, sort_keys=False, **kw)
การใช้งาน
# สร้าง Python Dict สตริงขึ้นมาพื่อทดสอบ
prog_dict = {
"name": "Python",
"author": "Guido Van Rossum",
"year": 1990,
"frameworks": [
"Flask", "Django"
],
"libraries": [
"Pandas", "Numpy",
"Matplotlib", "Requests"
]
}
print(type(prog_dict))
prog_string = json.dumps(prog_dict) # แปลง Python Dict ไปเป็น JSON String
print(prog_string)
print(type(prog_string))
Code Description
เมื่อทำการปริ้นซ์แสดงผลดูชนิดข้อมูลจะเห็นว่า ก่อนที่จะทำการแปลงข้อมูลยังเป็น dict อยู่และเมื่อทำการแปลงแล้วก็กลายเป็น string (JSON String) ทันที
Output
<class 'dict'>
{"name": "Python", "author": "Guido Van Rossum", "year": 1990, "frameworks": ["Flask", "Django"], "libraries": ["Pandas", "Numpy", "Matplotlib", "Requests"]}
<class 'str'>
คือการแปลง JSON String ไปเป็น Python Object (Dict) ทำได้โดยเรียกใช้เมธอด
json.loads()
parameters และ arguments (จาก Python Documentation)
json.loads(s, *, cls=None,
object_hook=None, parse_float=None,
parse_int=None, parse_constant=None,
object_pairs_hook=None, **kw)
การใช้งาน
import json
# สร้าง JSON สตริงขึ้นมาพื่อทดสอบ
prog_string = '{
"name": "Python",
"author": "Guido Van Rossum",
"year": 1990,
"frameworks": [
"Flask", "Django"
],
"libraries": [
"Pandas",
"Numpy",
"Matplotlib",
"Requests"
]
}'
print(type(prog_string))
prog_dict = json.loads(prog_string) # แปลง JSON string เป็น Python Dictionary (dict)
print(prog_dict)
print(type(prog_dict))
print(prog_dict["name"]) # เข้าถึงข้อมูลใน dict ของคีย์ name
Code Description
จะเห็นว่าก่อนแปลงนั้น ข้อมูลยังเป็นแบบ string หลังจากแปลงมาเป็น Python Object ก็จะได้เป็น dict
Output
<class 'str'>
{'name': 'Python', 'author': 'Guido Van Rossum', 'year': 1990, 'frameworks': ['Flask', 'Django'], 'libraries': ['Pandas', 'Numpy', 'Matplotlib', 'Requests']}
<class 'dict'>
Python
คือการแปลง Python Object (Dict) ไปเป็น JSON ทำได้โดยเรียกใช้งานเมธอด json.dump()
parameters และ arguments (จาก Python Documentation)
json.dump(obj, fp, *, skipkeys=False,
ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None,
indent=None, separators=None,
default=None, sort_keys=False, **kw)
การใช้งาน
# สร้าง Python Dict สตริงขึ้นมาพื่อทดสอบ
prog_dict = {
"name": "Python",
"author": "Guido Van Rossum",
"year": 1990,
"frameworks": [
"Flask",
"Django"
],
"libraries": [
"Pandas",
"Numpy",
"Matplotlib",
"Requests"
]
}
with open('data.json', 'w') as json_file:
json.dump(prog_dict, json_file) # เขียน Python Dict ลงในไฟล์ data.json
print(type(prog_dict))
Code Description
Output
{"name": "Python", "author": "Guido Van Rossum", "year": 1990, "frameworks": ["Flask", "Django"], "libraries": ["Pandas", "Numpy", "Matplotlib", "Requests"]}
จะเห็นว่าได้ไฟล์ data.json มาเรียบร้อย แต่ยังอ่านยากเพราะอยู่ในแถวเดียวกันหมด ดังนั้นจึงมีอีกหนึ่งอากิวเมนต์ที่เราสามารถช่วยให้ไฟล์ json นั้นเป็นระเบียบและอ่านง่าย โดยใช้ indent เข้ามาช่วย และทำการใส่ค่าเข้าไปคือ 4
with open('data.json', 'w') as json_file: json.dump(prog_dict, json_file, indent=4) # New
จะได้ไฟล์ data.json ที่เป็นระเบียบและอ่านง่ายดังภาพด้านล่าง
{
"name": "Python",
"author": "Guido Van Rossum",
"year": 1990,
"frameworks": [
"Flask",
"Django"
],
"libraries": [
"Pandas",
"Numpy",
"Matplotlib",
"Requests"
]
}
ข้อมูลถูกจัดอยู่ในฟอร์แมตที่เป็นระเบียบและอ่านง่าย
คือการแปลง JSON ไปเป็น Python Object (Dict) ทำได้โดยเรียกใช้งานเมธอด json.load()
parameters และ arguments (จาก Python Documentation)
json.load(fp, *, cls=None,
object_hook=None, parse_float=None,
parse_int=None, parse_constant=None,
object_pairs_hook=None, **kw)
การใช้งาน
# อิมพอร์ตและเปิด JSON file จาก path ที่อยู่ของไฟล์
with open('data.json') as json_file:
prog_dict = json.load(json_file) # แปลง JSON ไฟล์ เป็น Python Dict
print(prog_dict['name']) # เข้าถึงข้อมูลใน key ที่ต้องการ
print(prog_dict)
print(type(prog_dict))
Code Description
Output
Python
{'name': 'Python', 'author': 'Guido Van Rossum', 'year': 1990, 'frameworks': ['Flask', 'Django'], 'libraries': ['Pandas', 'Numpy', 'Matplotlib', 'Requests']}
<class 'dict'>
สรุป Python JSON และกระบวนการต่าง ๆ ครบจบในภาพเดียว
ภาพนี้น่าจะทำให้เห็นภาพรวมได้ชัดเจนยิ่งขึ้น
Note: ข้อสังเกตระหว่างเมธอด loads และ dumps ที่เติม s จะไม่เกี่ยวกับการจัดการไฟล์ แต่ถ้าเป็นเมธอดที่ไม่เติม s คือ load และ dump จะมีไฟล์มาเกี่ยวข้อง
เปิดโลกการเขียนโปรแกรมและ Software Development ด้วย online courses ที่จะพาคุณอัพสกิลและพัฒนาสู่การเป็นมืออาชีพ เรียนออนไลน์ เรียนจากที่ไหนก็ได้ พร้อมซัพพอร์ตหลังเรียน
เรียนเขียนโปรแกรม