0Pricing
Lua Academy · บทเรียน

เหตุใดจึงใช้ JSON

พื้นฐานการแลกเปลี่ยนข้อมูล

เหตุใดจึงใช้ JSON เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

JSON คืออะไร

JSON (สัญกรณ์วัตถุ JavaScript) เป็นรูปแบบข้อความน้ำหนักเบาสำหรับจัดเก็บและแลกเปลี่ยนข้อมูล อ่านเข้าใจได้ง่ายและไม่ขึ้นกับภาษาโปรแกรม

เว็บ API แทบทุกแห่ง ไฟล์การตั้งค่า และฐานข้อมูลต่างรองรับ JSON การเรียนรู้วิธีแปลงระหว่าง JSON กับตาราง Lua จะช่วยให้สคริปต์ของคุณสื่อสารกับโลกภายนอกได้

JSON มีรูปแบบคล้าย Lua

วัตถุ JSON ใช้เครื่องหมายปีกกาพร้อมคู่คีย์-ค่า ส่วนอาร์เรย์ใช้วงเล็บเหลี่ยม ซึ่งสอดคล้องกับตาราง Lua แทบจะพอดี

วัตถุ JSON จะกลายเป็นตาราง Lua ที่มีคีย์เป็นสตริง ส่วนอาร์เรย์ JSON จะกลายเป็นตาราง Lua ที่มีดัชนีตัวเลขเริ่มต้นที่ 1

-- JSON text
-- {"name": "Ada", "age": 36}

-- Equivalent Lua table
local person = { name = "Ada", age = 36 }
print(person.name)

Lua ไม่มี JSON ในตัว

ต่างจากบางภาษา Lua มาตรฐานไม่มีการรองรับ JSON มาให้ คุณต้องใช้ไลบรารี

ตัวเลือกที่ใช้กันมากที่สุดสองตัวคือ dkjson (Lua ล้วน ติดตั้งง่าย) และ lua-cjson (ไลบรารีภาษา C ที่ทำงานเร็ว) ทั้งสองตัวมีฟังก์ชัน encode และ decode ให้ใช้

การโหลดไลบรารี JSON

คุณโหลดไลบรารี JSON ด้วย require เช่นเดียวกับโมดูล Lua อื่น ๆ ตารางที่คืนค่ามาจะเก็บฟังก์ชันที่คุณต้องใช้

ในที่นี้เราโหลด dkjson แล้วผูกไว้กับตัวแปรท้องถิ่นชื่อ json

local json = require("dkjson")
-- now json.encode and json.decode are ready

การดำเนินการหลักสองอย่าง

สิ่งที่คุณทำกับ JSON มีเพียงสองอย่าง ได้แก่ decode และ encode

การถอดรหัสจะแปลงสตริง JSON ให้เป็นตาราง Lua ที่คุณอ่านได้ ส่วน การเข้ารหัสจะแปลงตาราง Lua กลับเป็นสตริง JSON ที่คุณส่งหรือบันทึกได้

local json = require("dkjson")
local t = json.decode('{"ok": true}')  -- string -> table
local s = json.encode(t)                -- table -> string

ตัวอย่างการถอดรหัส

เมื่อคุณได้รับข้อความ JSON จากไฟล์หรือ API json.decode จะแยกวิเคราะห์ข้อความนั้นเป็นตาราง Lua ที่นำไปใช้งานได้

หลังถอดรหัสแล้ว คุณจะเข้าถึงฟิลด์ต่าง ๆ ด้วยรูปแบบไวยากรณ์ Lua ปกติ

local json = require("dkjson")
local text = '{"city": "Oslo", "temp": 7}'
local data = json.decode(text)
print(data.city, data.temp)

ตัวอย่างการเข้ารหัส

หากต้องการสร้าง JSON ให้เติมข้อมูลลงในตาราง Lua แล้วส่งตารางนั้นให้ json.encode ผลลัพธ์คือสตริงที่พร้อมเขียนหรือส่งต่อ

local json = require("dkjson")
local book = { title = "Lua", pages = 328 }
local text = json.encode(book)
print(text)

ชนิดข้อมูล JSON

JSON รองรับชนิดข้อมูลชุดเล็ก ๆ ได้แก่ สตริง ตัวเลข ค่าบูลีน ค่าว่าง วัตถุ และอาร์เรย์

Lua จะแปลงสิ่งเหล่านี้เป็นสตริง ตัวเลข ค่าบูลีน nil และตาราง โปรดสังเกตว่าค่าว่างของ JSON ไม่มีสิ่งที่เทียบเท่าใน Lua ได้อย่างสมบูรณ์ จึงอาจทำให้เกิดผลลัพธ์ที่คาดไม่ถึง

เหตุผลที่เลือก JSON แทนรูปแบบที่กำหนดเอง

คุณอาจคิดค้นรูปแบบข้อความของตนเองได้ แต่ JSON เป็นรูปแบบที่ทุกแห่งเข้าใจอยู่แล้ว โปรแกรมแก้ไขข้อความสามารถเน้นรูปแบบได้ ตัวตรวจสอบสามารถตรวจสอบความถูกต้องได้ และภาษาอื่น ๆ ก็แยกวิเคราะห์ได้ทันที

การใช้ JSON ทำให้ข้อมูลของคุณย้ายไปใช้งานที่อื่นได้ง่าย และทำให้แก้จุดบกพร่องของโปรแกรมได้ง่ายขึ้น

กรณีการใช้งานทั่วไป

คุณจะเลือกใช้ JSON เมื่อเรียก REST API อ่านไฟล์การตั้งค่า แคชผลลัพธ์ หรือส่งข้อมูลระหว่างกระบวนการ

ในทุกกรณี รูปแบบจะเหมือนกัน นั่นคือถอดรหัส JSON ที่เข้ามาเป็นตาราง ทำงานกับข้อมูลนั้น แล้วเข้ารหัสกลับเมื่อต้องการส่งต่อ

local json = require("dkjson")
-- typical round trip
local data = json.decode(incoming)
data.seen = true
local out = json.encode(data)

จัดการข้อผิดพลาดในการถอดรหัส

การถอดรหัสอาจล้มเหลวหากข้อความไม่ใช่ JSON ที่ถูกต้อง dkjson จะคืนค่า ตำแหน่ง และข้อความแสดงข้อผิดพลาด แทนที่จะทำให้โปรแกรมหยุดทำงาน

ตรวจสอบเสมอว่าค่าที่คืนค่าตัวแรกเป็น nil หรือไม่ ก่อนนำไปใช้

local json = require("dkjson")
local data, pos, err = json.decode("{bad")
if not data then
  print("Invalid JSON:", err)
end

ตรวจสอบอย่างรวดเร็ว

ทดสอบความเข้าใจพื้นฐานเกี่ยวกับ JSON ใน Lua

สรุปทบทวน

JSON เป็นรูปแบบข้อมูลสากลที่สอดคล้องกับตาราง Lua ได้อย่างราบรื่น Lua มาตรฐานไม่มีการรองรับ JSON ดังนั้นคุณจึงต้องโหลดไลบรารีอย่าง dkjson หรือ cjson

การดำเนินการหลักสองอย่างคือ json.decode (สตริงเป็นตาราง) และ json.encode (ตารางเป็นสตริง) ต่อไปคุณจะได้เรียนรู้การถอดรหัส JSON เป็นตารางโดยละเอียด

คำถามที่พบบ่อย

บทเรียน “เหตุใดจึงใช้ JSON” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เหตุใดจึงใช้ JSON” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เหตุใดจึงใช้ JSON”

พื้นฐานการแลกเปลี่ยนข้อมูล คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “เหตุใดจึงใช้ JSON” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม

ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดจึงใช้ JSON
  2. ถอดรหัส JSON เป็นตาราง
  3. เข้ารหัสตารางเป็น JSON
  4. จัดการข้อมูลซ้อนกัน
← กลับไปที่ Lua Academy