0Pricing
Lua Academy · Pelajaran

Menyandikan Tabel Menjadi JSON

Serialisasikan data Lua.

Menyandikan Tabel Menjadi JSON adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Dasar-Dasar Pengodean

Pengodean adalah kebalikan dari penguraian: proses ini mengubah tabel Lua menjadi string JSON. Panggil json.encode(table).

Hasilnya adalah string satu baris yang dapat Anda tulis ke berkas atau kirim melalui jaringan.

local json = require("dkjson")
local t = { name = "Leo", age = 9 }
print(json.encode(t))

Objek vs Larik

Cara tabel Lua dikodekan bergantung pada kuncinya. Tabel dengan kunci bilangan bulat berurutan mulai dari 1 menjadi larik JSON.

Tabel dengan kunci string menjadi objek JSON. Tabel campuran bersifat ambigu dan sebaiknya dihindari.

local json = require("dkjson")
print(json.encode({ 1, 2, 3 }))        -- [1,2,3]
print(json.encode({ a = 1, b = 2 }))   -- {"a":1,"b":2}

Pencetakan Rapi

Secara bawaan, JSON berformat ringkas. dkjson dapat menambahkan indentasi pada output jika Anda meneruskan tabel opsi dengan indent = true.

Output yang rapi sangat cocok untuk berkas konfigurasi yang akan diedit oleh manusia.

local json = require("dkjson")
local t = { name = "Ann", roles = { "dev", "lead" } }
print(json.encode(t, { indent = true }))

Pengodean Angka dan Boolean

Angka dan nilai boolean Lua dikodekan langsung menjadi padanan JSON-nya. Bilangan bulat dan pecahan sama-sama menjadi angka JSON.

local json = require("dkjson")
local t = { count = 5, ratio = 1.5, active = true }
print(json.encode(t))

Masalah nil

Anda tidak dapat menyimpan nil dalam tabel untuk mengartikan JSON null karena menetapkan nil akan menghapus kunci sepenuhnya.

Untuk menghasilkan null harfiah, gunakan sentinel pustaka json.null sebagai nilainya.

local json = require("dkjson")
local t = { middle = json.null }
print(json.encode(t))  -- {"middle":null}

Larik Berlubang Bermasalah

Jika sebuah urutan memiliki celah (misalnya indeks 2 bernilai nil), Lua tidak lagi menganggapnya sebagai larik yang rapi. Pengodean dapat berhenti di celah tersebut atau berperilaku aneh.

Jaga indeks larik tetap berurutan tanpa celah, mulai dari 1, agar larik JSON dapat diprediksi.

local json = require("dkjson")
local t = { [1] = "a", [3] = "c" }  -- gap at 2
print(json.encode(t))               -- unreliable

Menulis JSON ke Berkas

Untuk menyimpan data secara permanen, encode tabel menjadi string lalu tulis string tersebut ke berkas.

Begitulah Anda menyimpan pengaturan, skor, atau keadaan terstruktur apa pun.

local json = require("dkjson")
local data = { theme = "dark", volume = 8 }
local f = io.open("settings.json", "w")
f:write(json.encode(data, { indent = true }))
f:close()

Tabel Kosong Secara Bawaan Menjadi Objek

Tabel Lua kosong {} tidak memiliki kunci, sehingga secara bawaan dkjson mengodekannya sebagai objek kosong {}, bukan larik.

Jika Anda memerlukan larik kosong, dkjson memungkinkan Anda menandai tabel tersebut; jika tidak, jenisnya ambigu.

local json = require("dkjson")
print(json.encode({}))  -- {}

Urutan Kunci Tidak Dijamin

Tabel Lua tidak memiliki urutan bawaan untuk kunci string, sehingga urutan bidang dalam JSON yang dikodekan dapat berbeda-beda.

Jangan mengandalkan urutan bidang; pemroses JSON seharusnya mencari kunci berdasarkan nama, bukan posisi.

Konsistensi Perjalanan Bolak-Balik

Pengodean lalu penguraian seharusnya menghasilkan tabel yang setara. Perjalanan bolak-balik ini merupakan cara yang baik untuk menguji penanganan data Anda.

local json = require("dkjson")
local orig = { a = 1, list = { 2, 3 } }
local copy = json.decode(json.encode(orig))
print(copy.a, copy.list[2])

Pengodean dengan cjson

lua-cjson juga menyediakan encode. Pustaka ini lebih cepat, tetapi memiliki lebih sedikit opsi pemformatan dan menghasilkan kesalahan alih-alih mengembalikannya.

Untuk output dengan indentasi rapi, dkjson biasanya lebih mudah digunakan.

local cjson = require("cjson")
local s = cjson.encode({ ok = true, n = 42 })
print(s)

Pemeriksaan Singkat

Uji pemahaman Anda tentang pengodean tabel Lua.

Ringkasan

Pengodean mengubah tabel Lua menjadi string JSON. Urutan berkunci integer menjadi larik, sedangkan tabel berkunci string menjadi objek.

Gunakan json.null untuk null harfiah, jaga larik tetap tanpa celah, dan teruskan indent = true agar output mudah dibaca. Selanjutnya Anda akan menangani data yang bersarang sangat dalam.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menyandikan Tabel Menjadi JSON” gratis?

Ya — teks lengkap “Menyandikan Tabel Menjadi JSON” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menyandikan Tabel Menjadi JSON”?

Serialisasikan data Lua. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Menyandikan Tabel Menjadi JSON” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa JSON
  2. Mendekode JSON Menjadi Tabel
  3. Menyandikan Tabel Menjadi JSON
  4. Menangani Data Bertingkat
← Kembali ke Lua Academy