0Pricing
Lua Academy · Ders

Tabloları JSON'a Kodlama

Lua verilerini serileştirin.

Tabloları JSON'a Kodlama, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

Kodlamanın Temelleri

Kodlama, kod çözmenin tersidir: bir Lua tablosunu JSON dizesine dönüştürür. json.encode(table) işlevini çağırın.

Sonuç, bir dosyaya yazabileceğiniz veya ağ üzerinden gönderebileceğiniz tek satırlık bir dizedir.

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

Nesneler ve Diziler

Bir Lua tablosunun nasıl kodlanacağı anahtarlarına bağlıdır. 1'den başlayan ardışık tamsayı anahtarlarına sahip bir tablo, JSON dizisine dönüşür.

Dize anahtarlarına sahip bir tablo, JSON nesnesine dönüşür. Karma tablolar belirsizdir ve bunlardan kaçınılmalıdır.

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

Biçimlendirilmiş Yazdırma

Varsayılan olarak JSON sıkıştırılmıştır. dkjson, okunabilirlik için indent = true seçeneğinin bulunduğu bir tablo aktararak çıktıyı girintileyebilir.

Biçimlendirilmiş çıktı, insanların düzenleyeceği yapılandırma dosyaları için harikadır.

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

Sayıları ve Boole Değerlerini Kodlama

Lua sayıları ve Boole değerleri, doğrudan JSON karşılıklarına kodlanır. Tam sayılar ve kayan noktalı sayılar JSON sayısına dönüşür.

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

nil Sorunu

JSON null değerini ifade etmek için bir tabloda nil saklayamazsınız; çünkü nil atamak anahtarı tamamen kaldırır.

Gerçek bir null değeri üretmek için değer olarak kütüphanenin json.null belirtecini kullanın.

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

Seyrek Diziler Bozulur

Bir dizilimde boşluk varsa (örneğin 2. dizin nil ise) Lua artık bunu düzgün bir dizi olarak değerlendirmez. Kodlama boşlukta durabilir veya beklenmedik davranabilir.

Öngörülebilir JSON dizileri için dizi dizinlerini 1'den başlayarak kesintisiz tutun.

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

JSON'ı Dosyaya Yazma

Verileri kalıcı hâle getirmek için tabloyu bir dizeye kodlayın ve bu dizeyi bir dosyaya yazın.

Ayarları, puanları veya yapılandırılmış herhangi bir durumu bu şekilde kaydedebilirsiniz.

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()

Boş Tablo Varsayılan Olarak Nesne Olur

Boş bir Lua tablosunun {} anahtarı yoktur; bu nedenle dkjson, varsayılan olarak tabloyu dizi değil, boş bir nesne {} olarak kodlar.

Boş bir diziye ihtiyacınız varsa dkjson tabloyu etiketlemenize olanak tanır; aksi hâlde tür belirsizdir.

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

Anahtar Sırası Garanti Edilmez

Lua tablolarında dize anahtarları için doğal bir sıra yoktur; bu nedenle kodlanan JSON'daki alanların sırası değişebilir.

Alanların sırasına güvenmeyin; JSON tüketicileri anahtarları konuma göre değil, adlarına göre aramalıdır.

Gidiş-Dönüş Tutarlılığı

Önce kodlama, ardından kod çözme işlemi size eşdeğer bir tablo vermelidir. Bu gidiş-dönüş, veri işleme biçiminizi test etmenin iyi bir yoludur.

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

cjson ile Kodlama

lua-cjson de encode sunar. Daha hızlıdır; ancak biçimlendirme seçenekleri daha azdır ve hataları döndürmek yerine yükseltir.

Girintili ve biçimlendirilmiş çıktı için dkjson genellikle daha kullanışlı bir seçimdir.

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

Hızlı Kontrol

Lua tablolarını kodlama konusundaki kavrayışınızı test edin.

Özet

Kodlama, Lua tablolarını JSON dizelerine dönüştürür. Tam sayı anahtarlı dizilimler dizilere, dize anahtarlı tablolar ise nesnelere dönüşür.

Gerçek null değerleri için json.null kullanın, dizileri kesintisiz tutun ve okunabilir çıktı için indent = true aktarın. Sırada derin iç içe verileri ele alacaksınız.

Sıkça Sorulan Sorular

“Tabloları JSON'a Kodlama” dersi ücretsiz mi?

Evet — “Tabloları JSON'a Kodlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“Tabloları JSON'a Kodlama” dersinde ne öğreneceğim?

Lua verilerini serileştirin. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Tabloları JSON'a Kodlama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. JSON Neden Kullanılır
  2. JSON'u Tablolara Kod Çözme
  3. Tabloları JSON'a Kodlama
  4. İç İçe Verileri Yönetme
← Lua Academy Sayfasına Dön