Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serialization 尝试使用serpent库反序列化lua中的表_Serialization_Lua_Deserialization - Fatal编程技术网

Serialization 尝试使用serpent库反序列化lua中的表

Serialization 尝试使用serpent库反序列化lua中的表,serialization,lua,deserialization,Serialization,Lua,Deserialization,因此,我尝试对lua表进行简单的序列化,并将其反序列化回表中。但由于某种原因,它只是失败了 local a = {} a[0] = {name="presetA"} local line = serpent.line(a) local presets, err = loadstring(line) if (err) then log("Error") log(err) else log("Success") log(serpent.block(presets)

因此,我尝试对lua表进行简单的序列化,并将其反序列化回表中。但由于某种原因,它只是失败了

local a = {}
a[0] = {name="presetA"}
local line = serpent.line(a)

local presets, err = loadstring(line)

if (err) then
    log("Error")
    log(err)
else
    log("Success")
    log(serpent.block(presets))
end
运行后,将显示日志(err)


loadstring从给定字符串加载Lua块并运行它

由于序列化表不是有效的Lua表达式,解释器会报告观察到的错误

让我们序列化一个示例:

serpent.line({key = "value"})
返回

{key=“value”}--[[表:0D80CF40]]

表构造函数本身不是有效的Lua表达式

尝试运行该行,您将看到Lua将报告:

输入:1:靠近“{”的意外符号

serpent.line的输出不能用作
loadstring
的输入

现在,如果您改用
serpent.dump
,可以看到不同之处

"do local _={name="hallo"};return _;end"
这是一个有效的、可执行的Lua块,它将返回序列化的表

请注意以下章节:

请注意,行函数和块函数返回漂亮的打印数据 结构,如果要反序列化它们,则需要添加return 在通过loadstring运行它们之前。例如:
loadstring('return'…require('mobdebug')。行(“foo”)()==“foo”

而您可以使用loadstring或load函数来加载序列化的 片段,蛇还提供了加载功能,增加了安全检查 如果片段中有任何可执行代码,则报告错误


请阅读手册。

loadstring从给定字符串加载Lua块并运行它

由于序列化表不是有效的Lua表达式,解释器会报告观察到的错误

让我们序列化一个示例:

serpent.line({key = "value"})
返回

{key=“value”}--[[表:0D80CF40]]

表构造函数本身不是有效的Lua表达式

尝试运行该行,您将看到Lua将报告:

输入:1:靠近“{”的意外符号

serpent.line的输出不能用作
loadstring
的输入

现在,如果您改用
serpent.dump
,可以看到不同之处

"do local _={name="hallo"};return _;end"
这是一个有效的、可执行的Lua块,它将返回序列化的表

请注意以下章节:

请注意,行函数和块函数返回漂亮的打印数据 结构,如果要反序列化它们,则需要添加return 在通过loadstring运行它们之前。例如:
loadstring('return'…require('mobdebug')。行(“foo”)()==“foo”

而您可以使用loadstring或load函数来加载序列化的 片段,蛇还提供了加载功能,增加了安全检查 如果片段中有任何可执行代码,则报告错误


请阅读手册。

loadstring(line)
替换为
loadstring(“return”.line)(
似乎有一个特殊的函数
serpent.load
用于反序列化将
loadstring(line)
替换为
loadstring(“return”.line)()
似乎有一个用于反序列化的特殊函数
serpent.load