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

การเลือกรูปแบบข้อมูล

ข้อแลกเปลี่ยน

การเลือกรูปแบบข้อมูล เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การอ่านและเขียน JSON
  2. การทำงานกับ CSV
  3. การกำหนดค่า YAML
  4. การเลือกรูปแบบข้อมูล
← กลับไปที่ Ruby Academy