如何使用Lua脚本与.json数据库交互

如何使用Lua脚本与.json数据库交互,json,lua,Json,Lua,我对Lua编码非常陌生,只了解基本知识。我试图制作一个Lua脚本,如果玩家在聊天(FiveM chat)中执行一个命令(/callsign),后跟他们想要的呼号,它将保存在一个.json数据库中,包括他们呼号旁边的名字。如果用户已经有呼号,我也希望用新呼号覆盖他们的旧呼号 用法: /callsign [callsign] 示例: /callsign RYANAIR-121 /callsign AIRMALTA-726 /callsign UNITEDAIRLINES-417 我没有太多的开始

我对Lua编码非常陌生,只了解基本知识。我试图制作一个Lua脚本,如果玩家在聊天(FiveM chat)中执行一个命令(/callsign),后跟他们想要的呼号,它将保存在一个.json数据库中,包括他们呼号旁边的名字。如果用户已经有呼号,我也希望用新呼号覆盖他们的旧呼号

用法:

/callsign [callsign]
示例:

/callsign RYANAIR-121
/callsign AIRMALTA-726
/callsign UNITEDAIRLINES-417
我没有太多的开始。请不要用勺子喂我,因为我想自己学习如何创建这个脚本

迄今为止的代码:

——侠盗自动通知功能
函数通知(文本)
SetNotificationTextEntry(“字符串”)
AddTextComponentString(文本)
提款通知(假,假)
结束
--命令
RegisterCommand(“Callsign”,函数(源、参数、原始)
通知(“呼号已成功设置/更改”)--通知用户其呼号已设置/更改
(完)

我为lua提供了一个json api,它非常易于使用

示例json.encode(myTable,{indent=true}) 示例2:json.decode(MyjsonString)

--模块选项:
本地始终\u尝试\u使用\u lpeg=false
本地寄存器\全局\模块\表=真
本地全局模块名称='json'
--[==[
David Kolf针对Lua 5.1/5.2的JSON模块
========================================
*版本2.4*
在默认配置中,此模块不写入全局值,甚至不写入
模块表。使用导入它
json=require(“dkjson”)
在“require”或类似函数不可用的环境中
并且您无法接收模块的返回值,您可以设置
选项“register\u global\u module\u table”改为“true”。模块表将
然后使用选项给定的名称保存在全局变量中
`全局模块名称“”。
导出的函数和值:
`json.encode(对象[,状态])`
--------------------------------
创建表示对象的字符串。`object`可以是表,
字符串、数字、布尔值、`nil`、`json.null`或具有
元表中的函数“\uu tojson”。表只能使用字符串
和作为键的数字及其值必须作为有效对象
嗯,它会为任何无效的数据类型或引用引发一个错误
周期。
`state`是具有以下字段的可选表:
-“缩进”
设置“缩进”(布尔值)时,创建的字符串将包含
换行和缩进。否则它将是一条长线。
-‘钥匙顺序’
`keyorder`是一个数组,用于指定
编码输出。如果对象具有不在此数组中的键
它们在排序的键之后写入。
-“级别”
这是使用'indent'时使用的初始缩进级别
设置。每层增加两个空格。如果没有空格,则设置
到0。
-“缓冲区”
`buffer`是一个数组,用于存储结果的字符串,以便
可以一次连接。如果未提供,则编码
函数将临时创建它并返回
连接的结果。
-‘bufferlen’
设置'bufferlen'时,它必须是最后一个的索引
“buffer”的元素。
-‘桌子’
`tables`是用于检测参考周期的集合。它是创建的
不存在时为临时。当前正在处理的每个表
用作键,值为'true'。
设置“state.buffer”时,返回值将为“true”
成功。如果没有'state.buffer',返回值将是字符串。
`json.decode(字符串[,位置[,空]])`
--------------------------------------------
解码从'position'开始的'string',如果'position'为
省略。
`null`是为null值返回的可选值
默认值为“nil”,但可以将其设置为“json.null”或任何其他值
价值
返回值是对象或“nil”,即下一个对象的位置
不属于对象的字符,如果出现错误
错误消息。
创建两个元表。解码的每个数组或对象都将
“\uu jsontype”字段设置为“array”或“array”的元表
`对象“”。如果要提供自己的元表,请使用以下语法
json.decode(字符串、位置、null、objectmeta、arraymeta)
要防止分配元表,请传递“nil”:
json.decode(字符串、位置、null、nil)
`.uu jsonorder`
-------------------------
`__jsonorder`可以覆盖特定表的'keyorder'。
`.uu jsontype`
------------------------
`__jsontype`可以是`“数组”`或`“对象”`。此值仅为
已选中空表。(空表的默认值为`“数组”`)。
`.uu tojson(自我、状态)`
------------------------------------
您可以在元表中提供自己的`\u tojson`函数
函数,您可以直接添加到缓冲区并返回true,
或者,您可以返回一个字符串。错误为nil时,应返回一条消息
返回。
`json.null`
-----------
可以使用此值设置显式的“null”值。
`json.version`
--------------
设置为“dkjson 2.4”。
`json.quotestring(字符串)`
---------------------------
引用UTF-8字符串并使用JSON转义关键字符
转义序列。此函数仅在生成
您自己的`\u tojson`函数。
`json.addnewline(状态)`
-------------------------
设置“state.indent”后,在“state.buffer”和空格中添加一个换行符
根据“state.level”。
LPeg支持
------------
当设置了本地配置变量“always\u try\u using\u lpeg”时,
此模块尝试加载LPeg以替换“解码”功能
速度提升非常显著。您可以在以下位置获得LPeg模块:
.
当无法加载LPeg时,纯Lua函数保持活动状态。
如果您不希望此模块单独需要LPeg,
在的“选项”部分中禁用“始终使用”选项
模块的顶部。
在这种情况下,您可以稍后使用
###`json.use_lpeg()`
需要LPeg mo