- 363
- 281
Не видел гайдов по JSON на форуме, и думаю, будет не лишним показать что этот JSON из себя представляет
Если вкратце: JSON - Это формат обмена данными, которые легко пишутся и читаются как и человеком, так и компьютером.
Если вкратце: JSON - Это формат обмена данными, которые легко пишутся и читаются как и человеком, так и компьютером.
Структура JSON
Каждый элемент JSON-таблицы состоит из ключа, и его значения. Для примера возьмём привычную нам таблицу LUA, но вместо привычных нумерований мы будем делать ключи:
Lua:
local t = {
['Member'] = 'Sweet', -- Мы указали ключ, и значение ключа (Member - ключ, Sweet - его значение)
['Number'] = 123, -- То же самое, только с целочисленным
['isGachi'] = true -- То же самое, только с логическим типом данных
}
print(t['Member'])
--Выведет Sweet, то же самое будет и с другими элементами, только тип данных будет другой
JSON-таблица имеет немного другую структуру, но почти аналогична:
JSON:
{
"Member" : "Sweet",
"Number" : 123,
"isGachi" : true
}
Помимо этого, как и в LUA, мы можем добавить какой-либо массив, или объект:
JSON:
{
"gachiNames" : [
"Nikita", "Andrew", "Pavel"
],
"gachies" : {
"Nikita" : "Volkov",
"Andrew" : "Mason",
"Pavel" : "Volya"
}
}
Работа с таблицами
В библиотеке moonloader есть функции encodeJson, и decodeJson, как раз таки с ними мы и будем работать.
Представим, что у нас есть файл table.json:
JSON:
{
"players" : {
"Michael_Jordan" : "Bulls",
"Edward_Bill" : "Defenders",
"Katrin_White" : "Poop"
}
}
Нам нужно проверить, в какой семье состоит Майкл Джордан (Семьи указаны в значениях ключей). Сделаем мы это так:
Lua:
local file = io.open("table.json", "r") -- Открываем файл в режиме чтения
a = file:read("*a") -- Читаем файл, там у нас таблица
file:close() -- Закрываем
table = decodeJson(a) -- Читаем нашу JSON-Таблицу
print(table["players"]["Michael_Jordan"]) -- Выведет Bulls
А теперь представим, что мы хотим сохранить новое значение, сделать это тоже просто:
Lua:
local file = io.open("table.json", r) -- Выполняем те же действия
a = file:read("*a")
file:close()
local table = decodeJson(a)
-- А теперь добавляем в таблицу значение
table["players"]["Marcus_Devil"] = "GachiFamily"
encodedTable = encodeJson(table) -- превращаем наш Lua массив в JSON
-- После того, как добавили, открываем файл в режиме записи
local file = io.open("table.json", "w")
file:write(encodedTable) -- Записываем нашу таблицу
file:flush() -- Сохраняем
file:close() -- Закрываем
Пример
Где же можно использовать JSON-Таблицы? Как минимум это будет полезно при запросах в интернет.
К примеру, сделаем оповещения об обновлениях, таблица на сайте pastebin (RAW-формат) выглядит вот так:
К примеру, сделаем оповещения об обновлениях, таблица на сайте pastebin (RAW-формат) выглядит вот так:
JSON:
{
"update" : 1.3,
"news" : "Были добавлены оповещения об обновлениях."
}
Теперь делаем скрипт, который будет показывать диалог с оповещением, в случае если версия скрипта будет меньше новой версии:
Lua:
local version = 1.2 -- Указываем версию нашего скрипта
--Подключаем все нужные нам библиотеки
require 'moonloader'
local requests = require 'requests'
local encoding = require 'encoding'
encoding.default = "CP1251"
local u8 = encoding.UTF8
url = requests.get("https://pastebin.com/raw/UMEWVTJV") -- Отправляем GET запрос к нашей таблице
a = decodeJson(url.text) -- Получаем её, декодируем
function main()
while not isSampAvailable() do wait(0) end
-- Далее делаем условие, если наша версия меньше, показываем диалог
if tonumber(a["update"]) > version then
sampShowDialog(1234, "Обновление "..a["update"], "Обнаружено обновление "..a["update"].."!\n"..u8:decode(a["news"]), "Понял")
end
wait(0)
end
И получаем вот такой результат:
Так же можно сделать какой-нибудь чёрный список игроков, лист админов для онлайнера и т.д, всё зависит от вашей фантазии
Надеюсь кому-то это будет полезно.
Так же можно сделать какой-нибудь чёрный список игроков, лист админов для онлайнера и т.д, всё зависит от вашей фантазии
Надеюсь кому-то это будет полезно.
Последнее редактирование: