0Pricing
Lua Academy · Ders

İç İçe Verileri Yönetme

Karmaşık yapılarla çalışın.

İç İçe Verileri Yönetme, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 4. 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.

İç İçe Veriler Her Yerdedir

Gerçek dünyadaki JSON nadiren düzdür. Nesneler nesneler içerir ve diziler, çoğu zaman birkaç seviye derinlikte olmak üzere nesneler içerir.

Lua'da bu, tabloların tabloların içinde bulunması anlamına gelir. İyi haber şu ki decode ve encode iç içe yapıları otomatik olarak işler.

Bir Nesnenin İçinde Nesne

Bir JSON değeri kendisi de bir nesne olduğunda, iç içe bir Lua tablosuna dönüştürülür. Zincirlenmiş alan erişimiyle daha alt seviyelere inersiniz.

local json = require("dkjson")
local d = json.decode('{"user": {"name": "Eve", "age": 30}}')
print(d.user.name)
print(d.user.age)

Nesnelerden Oluşan Dizi

Çok yaygın bir yapı, kayıt listesi gibi nesnelerden oluşan bir JSON dizisidir. Bu yapı, tablo dizilimlerinden oluşan bir diziye dönüşür.

ipairs ile döngü kurun ve her öğenin alanlarını okuyun.

local json = require("dkjson")
local d = json.decode('[{"id":1},{"id":2}]')
for _, item in ipairs(d) do
  print(item.id)
end

Derin İç İçe Erişim

Veriler ne kadar derinse o kadar zincirleme erişim kullanabilirsiniz. Her seviye yalnızca başka bir tablo aramasıdır.

Ancak aradaki seviyelerden biri eksikse zincir, 'nil değerini dizinlemeye çalışma' hatası verir.

local json = require("dkjson")
local d = json.decode('{"a":{"b":{"c": 42}}}')
print(d.a.b.c)

Güvenli İç İçe Erişim

Eksik seviyelerde çökmeleri önlemek için her adımı denetleyin veya and kısa devre değerlendirmesini kullanın.

and zinciri ilk nil değerinde durur ve hata vermek yerine nil döndürür.

local json = require("dkjson")
local d = json.decode('{"a":{}}')
local c = d.a and d.a.b and d.a.b.c
print(c)  -- nil, no crash

İç İçe Dizilerde Gezinme

Diziler, daha fazla dizi içeren nesneler barındırabilir. Döngülerinizi yapıya uyacak şekilde iç içe yerleştirin.

local json = require("dkjson")
local d = json.decode('[{"tags":["a","b"]}]')
for _, rec in ipairs(d) do
  for _, tag in ipairs(rec.tags) do
    print(tag)
  end
end

İç İçe Tablolar Oluşturma

İç içe JSON kodlamak için Lua tablolarını iç içe yerleştirmeniz yeterlidir. Kodlayıcı, tüm yapıyı özyinelemeli olarak dolaşır.

local json = require("dkjson")
local t = {
  user = { name = "Jo", roles = { "admin", "editor" } }
}
print(json.encode(t, { indent = true }))

İç İçe Değerleri Değiştirme

Yeniden kodlamadan önce istediğiniz derinlikte alanları okuyabilir, değiştirebilir ve ekleyebilirsiniz. Verileri dönüştürmenin temeli budur.

local json = require("dkjson")
local d = json.decode('{"cfg":{"volume":5}}')
d.cfg.volume = 8
d.cfg.muted = false
print(json.encode(d))

Dizileri ve Nesneleri Birlikte Kullanma

JSON, farklı seviyelerde dizilerle nesneleri serbestçe bir araya getirir. Lua da bunu, dizilim tablolarıyla anahtarlı tabloları birlikte iç içe kullanarak yansıtır.

Her tablonun tutarlı biçimde iki yapıdan yalnızca biri olduğundan emin olun.

local json = require("dkjson")
local t = {
  team = "red",
  members = { { id = 1 }, { id = 2 } }
}
print(json.encode(t))

Bilinmeyen Yapılarda Gezinme

Yapıyı önceden bilmiyorsanız her değeri incelemek ve tabloların içine özyinelemeli olarak girmek için type() kullanın.

Bu sayede rastgele JSON verileri için genel işlemciler yazabilirsiniz.

local function walk(v)
  if type(v) == "table" then
    for k, sub in pairs(v) do walk(sub) end
  else
    print(v)
  end
end

İç İçe Yapılarda null Değerlerine Dikkat

İç içe verilerin derinliklerindeki bir null değeri de dkjson'da json.null olarak çözülür. Yapılarda gezinirken bunu hesaba katın; böylece onu gerçek bir tablo veya değer sanmazsınız.

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

Hızlı Kontrol

Lua'da iç içe JSON işleme konusundaki becerinizi test edin.

Özet

İç içe JSON, tabloların içindeki tablolara eşlenir; decode ve encode özyinelemeyi sizin için işler.

Zincirlenmiş erişimle alt seviyelere inin; ancak eksik seviyelere karşı ve zincirlerini kullanarak önlem alın. İç içe Lua tabloları oluşturarak iç içe çıktı üretin ve her derinlikte null değerlerini ve dizi ile nesne arasındaki ayrımı hatırlayın.

Sıkça Sorulan Sorular

“İç İçe Verileri Yönetme” dersi ücretsiz mi?

Evet — “İç İçe Verileri Yönetme” 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.

“İç İçe Verileri Yönetme” dersinde ne öğreneceğim?

Karmaşık yapılarla çalışın. 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 4. dersidir.

“İç İçe Verileri Yönetme” 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