การเลือกรูปแบบข้อมูล
ข้อแลกเปลี่ยน
การเลือกรูปแบบข้อมูล เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
รูปแบบสามชนิด งานสามแบบ
ตอนนี้คุณรู้จัก JSON, CSV และ YAML แล้ว แต่ละรูปแบบเหมาะกับสถานการณ์ที่แตกต่างกัน การเลือกรูปแบบที่เหมาะสมช่วยให้ผลิต จัดเก็บ และนำข้อมูลไปใช้งานได้ง่าย
- JSON สำหรับ API และเว็บ
- CSV สำหรับข้อมูลแบบตารางหรือสเปรดชีต
- YAML สำหรับการตั้งค่า
puts ['JSON', 'CSV', 'YAML'].join(', ')จุดเด่นของ JSON
JSON มีขนาดกะทัดรัด รองรับอย่างแพร่หลาย และจับคู่กับ Hash และ Array ที่ซ้อนกันได้ จึงเป็นมาตรฐานโดยพฤตินัยสำหรับ เว็บ API และการแลกเปลี่ยนข้อมูลระหว่างบริการ
require 'json'
puts({ id: 1, items: [1, 2] }.to_json)จุดด้อยของ JSON
JSON ไม่มีความคิดเห็น และมีรายละเอียดมากเกินไปสำหรับให้มนุษย์แก้ไขด้วยมือ เครื่องหมายจุลภาคท้ายรายการและเครื่องหมายอัญประกาศเดี่ยวไม่ถูกต้อง จึงทำให้ผู้ใช้มักเกิดข้อผิดพลาดในไฟล์การตั้งค่า
require 'json'
begin
JSON.parse('{"a":1,}')
rescue JSON::ParserError
puts 'trailing comma not allowed'
endจุดเด่นของ CSV
CSV เหมาะอย่างยิ่งกับ ข้อมูลแบบตารางแบน ซึ่งประกอบด้วยแถวและคอลัมน์ สเปรดชีต การส่งออก และการนำเข้าข้อมูลจำนวนมากต่างก็ใช้ CSV และ CSV ยังมีขนาดกะทัดรัดมากสำหรับตารางขนาดใหญ่
require 'csv'
puts(CSV.generate { |c| c << ['a', 'b']; c << [1, 2] })จุดด้อยของ CSV
CSV ไม่สามารถแสดงข้อมูลที่ ซ้อนกันหรือมีลำดับชั้น ได้ ไม่มีระบบชนิดข้อมูลมาตรฐาน ดังนั้นทุกอย่างจึงเป็นสตริงจนกว่าคุณจะแปลงข้อมูล และรูปแบบย่อยต่าง ๆ เช่น ตัวคั่นและการใส่เครื่องหมายอัญประกาศก็แตกต่างกัน
require 'csv'
row = CSV.parse_line('5,true')
puts(row[0].class)
puts(row[1].class)จุดเด่นของ YAML
YAML เป็นรูปแบบที่ มนุษย์อ่านได้ง่ายที่สุด รองรับความคิดเห็น และจัดการการซ้อนระดับได้อย่างเป็นระเบียบ จึงเหมาะอย่างยิ่งกับไฟล์การตั้งค่าที่นักพัฒนาแก้ไขด้วยมือ
require 'yaml'
text = "# app config\nport: 8081"
puts(YAML.load(text)['port'])จุดด้อยของ YAML
กฎการเยื้องของ YAML เสี่ยงต่อข้อผิดพลาด (ช่องว่างเกินมาหนึ่งช่องก็ทำให้ใช้ไม่ได้) และการโหลดที่ไม่ปลอดภัยอาจเป็นความเสี่ยงด้านความปลอดภัย นอกจากนี้ยัง parse ช้ากว่า JSON
require 'yaml'
cfg = YAML.safe_load("port: 8081")
puts(cfg['port'])เปรียบเทียบการซ้อนระดับ
JSON และ YAML ต่างก็แสดงโครงสร้างที่ซ้อนกันแบบเดียวกันได้อย่างเป็นธรรมชาติ แต่ CSV ทำไม่ได้
require 'json'
require 'yaml'
data = { 'user' => { 'name' => 'Ada', 'roles' => ['admin'] } }
puts(data.to_json)
puts(data.to_yaml)ความอ่านง่ายเทียบกับความกะทัดรัด
สิ่งที่ต้องแลกกันคือ YAML อ่านง่ายที่สุด JSON มีความสมดุล ส่วน CSV กะทัดรัดที่สุดสำหรับตาราง ควรเลือกตามว่ามนุษย์หรือเครื่องจักรเป็นผู้ใช้ข้อมูลหลัก
require 'json'
require 'yaml'
h = { 'a' => 1, 'b' => 2 }
puts("JSON len: #{h.to_json.length}")
puts("YAML len: #{h.to_yaml.length}")คู่มือการตัดสินใจ
หลักเกณฑ์อย่างรวดเร็ว:
- กำลังสื่อสารกับเว็บ API ใช่หรือไม่ JSON
- กำลังส่งออกแถวข้อมูลไปยังสเปรดชีตใช่หรือไม่ CSV
- เป็นการตั้งค่าแอปที่มนุษย์แก้ไขใช่หรือไม่ YAML
เมื่อไม่แน่ใจ JSON เป็นค่าเริ่มต้นที่ปลอดภัยที่สุดสำหรับการแลกเปลี่ยนข้อมูล
choice = { api: 'JSON', table: 'CSV', config: 'YAML' }
puts(choice[:config])การแปลงระหว่างรูปแบบ
เนื่องจากทั้งสามรูปแบบ parse เป็นโครงสร้าง Ruby Hash/Array เดียวกัน การแปลงจึงทำได้ง่าย เพียง parse รูปแบบหนึ่งแล้ว dump เป็นอีกรูปแบบหนึ่ง
require 'json'
require 'yaml'
data = JSON.parse('{"port":8081,"name":"app"}')
puts(data.to_yaml)ตรวจสอบอย่างรวดเร็ว
รูปแบบใดเป็นตัวเลือกเริ่มต้นที่ดีที่สุดสำหรับไฟล์การตั้งค่าที่นักพัฒนาแก้ไขด้วยมือและต้องการใส่ความคิดเห็น
สรุปทบทวน: การเลือกรูปแบบ
ตอนนี้คุณสามารถเลือกเครื่องมือที่เหมาะสมได้แล้ว:
- JSON: API การแลกเปลี่ยนข้อมูล มีความสมดุล
- CSV: ตารางแบน สเปรดชีต กะทัดรัด
- YAML: การตั้งค่า อ่านง่าย มีความคิดเห็น และซ้อนระดับได้
- ทั้งหมด parse เป็นโครงสร้าง Ruby เดียวกัน จึงแปลงได้ง่าย
require 'yaml'
require 'json'
puts(YAML.load('a: 1').to_json)คำถามที่พบบ่อย
บทเรียน “การเลือกรูปแบบข้อมูล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเลือกรูปแบบข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเลือกรูปแบบข้อมูล”
ข้อแลกเปลี่ยน คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การเลือกรูปแบบข้อมูล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม
ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอ่านและเขียน JSON
- การทำงานกับ CSV
- การกำหนดค่า YAML
- การเลือกรูปแบบข้อมูล