Перейти к содержанию

Модуль:JSON

Материал из LemonCraft Wiki

Для документации этого модуля может быть создана страница Модуль:JSON/doc

-- Модуль для работы с JSON-данными
local p = {}

-- Извлечение данных из JSON-страницы
function p.get(f)
	local args = f
	if f == mw.getCurrentFrame() then
		args = require([[Модуль:ProcessArgs]]).merge(true)
	end
	
	local page = args["страница"] or ''
	assert(page ~= '', "Необходима JSON-страница")
	
	local data = mw.loadJsonData(page)
	local curObject = data
	for _, key in ipairs(args) do
		curObject = curObject[key]
	end
	
	-- Если curObject является объектом (таблицей), то преобразуем её обратно
	-- в JSON-формат
	if type(curObject) == "table" then
		return mw.text.jsonEncode(curObject)
	else
		return curObject
	end
end

-- Преобразует полученные параметры в JSON-таблицу
function p.encode(f)
	return mw.text.jsonEncode(f:getParent().args)
end

return p