0Pricing
Lua Academy · Pelajaran

Mendekode JSON Menjadi Tabel

Urai string JSON.

Mendekode JSON Menjadi Tabel adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 Penguraian

Penguraian mengubah string JSON menjadi nilai Lua yang dapat Anda gunakan. Titik masuknya adalah json.decode(text).

Jika JSON tingkat teratas berupa objek, Anda mendapatkan tabel Lua dengan kunci string; jika berupa larik, Anda mendapatkan tabel dengan indeks numerik.

local json = require("dkjson")
local data = json.decode('{"id": 7}')
print(data.id)

Membaca Bidang Objek

Objek JSON yang telah diuraikan berperilaku seperti tabel Lua lainnya. Akses nilainya dengan notasi titik atau kurung siku.

Kunci yang bukan pengenal Lua yang valid, seperti kunci yang mengandung spasi, memerlukan sintaks kurung siku.

local json = require("dkjson")
local u = json.decode('{"name": "Mia", "full name": "Mia Lee"}')
print(u.name)
print(u["full name"])

Menguraikan Larik

Larik JSON diuraikan menjadi tabel urutan Lua dengan indeks yang dimulai dari 1. Anda dapat melakukan iterasi menggunakan ipairs atau perulangan numerik.

Ingat: larik Lua dimulai dari indeks 1, bukan 0.

local json = require("dkjson")
local nums = json.decode('[10, 20, 30]')
for i, v in ipairs(nums) do
  print(i, v)
end

Angka dan Boolean

Angka JSON diuraikan menjadi angka Lua, sedangkan JSON true/false diuraikan menjadi boolean Lua.

Setelah diuraikan, Anda dapat langsung menggunakannya dalam operasi aritmetika atau kondisional.

local json = require("dkjson")
local d = json.decode('{"qty": 3, "paid": false}')
if not d.paid then
  print("unpaid, qty =", d.qty)
end

Menangani Nilai Null

JSON null cukup rumit karena Lua nil menghapus kunci dari tabel. Setiap pustaka menanganinya dengan cara yang berbeda.

dkjson menguraikan null menjadi nilai penanda json.null, sehingga kuncinya tetap ada. Bandingkan nilainya dengan penanda tersebut untuk mendeteksi null.

local json = require("dkjson")
local d = json.decode('{"mid": null}')
if d.mid == json.null then
  print("mid is null")
end

Menguraikan dari Berkas

Sering kali JSON berada di dalam berkas. Baca seluruh berkas ke dalam string, lalu uraikan string tersebut.

Pola ini umum digunakan untuk memuat konfigurasi atau keadaan permainan yang disimpan.

local json = require("dkjson")
local f = io.open("config.json", "r")
local text = f:read("*a")
f:close()
local cfg = json.decode(text)
print(cfg.theme)

Tiga Nilai Kembalian

decode milik dkjson mengembalikan hingga tiga nilai: hasil penguraian, posisi tempat penguraian berhenti, dan pesan kesalahan.

Saat berhasil, hasilnya bukan nil; saat gagal, hasilnya nil dan nilai ketiga menjelaskan penyebabnya.

local json = require("dkjson")
local obj, pos, err = json.decode('{"a":1}')
print(obj.a, pos, err)

Memvalidasi Masukan

Jangan pernah memercayai JSON dari luar. Selalu periksa hasilnya sebelum menggunakannya agar muatan yang tidak valid tidak membuat program Anda berhenti.

local json = require("dkjson")
local function safeDecode(s)
  local v, _, err = json.decode(s)
  if not v then return nil, err end
  return v
end

Perbedaan cjson

lua-cjson bekerja dengan cara yang serupa, tetapi memunculkan kesalahan pada masukan yang tidak valid, bukan mengembalikan kesalahan tersebut. Bungkus penggunaannya dengan pcall agar aman.

cjson lebih cepat, yang penting untuk penguraian dalam jumlah besar.

local cjson = require("cjson")
local ok, data = pcall(cjson.decode, '{"x":1}')
if ok then print(data.x) else print("error") end

Kunci yang Hilang Bernilai Kosong

Jika Anda membaca kunci yang tidak ada dalam JSON, Lua cukup mengembalikan nil. Ini normal dan tidak menimbulkan kesalahan.

Gunakan nilai pengganti dengan or untuk menyediakan nilai bawaan bagi bidang opsional.

local json = require("dkjson")
local d = json.decode('{"name": "Sam"}')
local age = d.age or 0
print(d.name, age)

Tabel Kosong Bersifat Ambigu

Baik objek JSON kosong {} maupun larik kosong [] diuraikan menjadi tabel Lua kosong. Setelah penguraian, Anda tidak dapat mengetahui yang mana asalnya.

Hal ini terutama penting saat Anda melakukan enkode ulang; ingat ambiguitas tersebut dalam proses pulang-pergi.

Pemeriksaan Singkat

Periksa pemahaman Anda tentang penguraian JSON.

Ringkasan

Penguraian mengonversi teks JSON menjadi tabel Lua, dengan objek menjadi tabel berkunci string dan larik menjadi urutan berindeks mulai dari 1.

Selalu validasi hasilnya, tangani null melalui nilai penanda milik pustaka, dan ingat bahwa kunci yang hilang cukup bernilai nil. Berikutnya, Anda akan mengenkode kembali tabel Lua menjadi JSON.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mendekode JSON Menjadi Tabel” gratis?

Ya — teks lengkap “Mendekode JSON Menjadi Tabel” 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 “Mendekode JSON Menjadi Tabel”?

Urai string JSON. 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 2 dari 4.

Berapa lama pelajaran “Mendekode JSON Menjadi Tabel” 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