значение в json

shadow80962

Известный
Автор темы
127
13
Версия MoonLoader
.026-beta
Не могу понять как добавить значение в json файл, хочу добавлять с помощью команды но у меня ничего не получилось

Lua:
-- Загрузка
local file = io.open(getWorkingDirectory().."//ChetHelper//id_bot.json", "r")
    local a = file:read("*a")
    file:close()
    id_bot = decodeJson(a)
   
    sampRegisterChatCommand("new_id", function(id)

    end)

JSON:
{
    "list_id" : [
        "162",
        "150",
        "67"
    ]
}
 
  • Грустно
Реакции: qdIbp

shadow80962

Известный
Автор темы
127
13
там же можешь посмотреть пример
Способ интересный но хочется стандартными методами научиться делать.

Понял как добавить значение но получается так что новое значение заменяет все остальное с json файла

Lua:
    sampRegisterChatCommand("addip", function(ip)
        local file = io.open(getWorkingDirectory().."//AdminHelper//bot_ip.json", "r")
        a = file:read("*a")
        file:close()

        ipbot = decodeJson(a)

        ipbot["list_ip"] = ip

        encodedTable = encodeJson(ipbot)

        local file = io.open(getWorkingDirectory().."//AdminHelper//bot_ip.json", "w")
        file:write(encodedTable) -- Записываем нашу таблицу
        file:flush() -- Сохраняем
        file:close()
        sampAddChatMessage("[AdminHelper] {FFFFFF}Новый IP успешно добавлен в список!", 0x4169E1)
    end)

 -- Загрузка
    local file = io.open(getWorkingDirectory().."//AdminHelper//bot_ip.json", "r")
    local a = file:read("*a")
    file:close()
    ipbot = decodeJson(a)

JSON:
{
    "list_ip" : [
        "196.244.191.",
        "188.163.103."
    ]
}

Ну и способ роботы скрипта изменился
 

qdIbp

Автор темы
Проверенный
1,386
1,141
Lua:
local path = getGameDirectory()..'\\moonloader\\config\\ip.json'
local config= {
    '192.13.63'
}
-- Load json
if not doesFileExist(path) then
    local f = io.open(path, 'w+')
    f:write(encodeJson(config)):close()
else
    local f = io.open(path, "r")
    a = f:read("*a")
    config = decodeJson(a)
    f:close()
end
-- Save JSON
function JSONSave()
    if doesFileExist(path) then
        local f = io.open(path, 'w+')
        if f then
            f:write(encodeJson(config)):close()
        end
    end
end

function main()
    repeat wait(0) until isSampAvailable()
 
        sampRegisterChatCommand("addip", function(ip)
            if #ip ~= 0 then
                config[#config+1] = ip
                JSONSave()
                sampAddChatMessage("[AdminHelper] {FFFFFF}Новый IP успешно добавлен в список!", 0x4169E1)
            else
                sampAddChatMessage('Впиши arg',-1)
            end
        end)

    wait(-1)
end