Modul:JsonLoader
Modul:JsonLoader Bearbeiten
Dieses Hilfsmodul lädt und dekodiert JSON-Daten aus einer Seite im Modul-Namensraum.
Funktion Bearbeiten
JsonLoader.load(title)
title: Titel der Modul-Seite mit JSON-Inhalt (z. B.Modul:KategorieDaten.json)- Gibt zurück:
- das dekodierte Lua-Objekt (table) **oder**
nilund eine Fehlermeldung
Beispiel Bearbeiten
local loader = require('Modul:JsonLoader')
local daten, err = loader.load('Modul:KategorieDaten.json')
if daten then
-- Zugriff auf z. B. daten["Hilfeseiten"].description_de
else
return err
end
Anforderungen Bearbeiten
- Die JSON-Seite muss reines, gültiges JSON enthalten
- Kein Wikitext, keine Kommentare, keine Formatierungs-Tags
-- Modul:JsonLoader
-- Lädt eine JSON-Seite aus dem Modul-Namensraum und dekodiert sie
local JsonLoader = {}
function JsonLoader.load(title)
local content = mw.title.new(title):getContent()
if not content then
return nil, "⚠️ JSON page not found: " .. title
end
-- Extrahiere reinen JSON-Inhalt aus Lua-Wrapper
local match = content
:gsub('^%s*return%s*%[%=+%[', '')
:gsub('%]%=+%]%s*$', '')
if not match then
return nil, "⚠️ Could not extract JSON block from: " .. title
end
local ok, data = pcall(mw.text.jsonDecode, match)
if not ok or type(data) ~= "table" then
return nil, "⚠️ Invalid or unparsable JSON in: " .. title
end
return data, nil
end
return JsonLoader