我正在将字符串中的 lua 表文字从 Web 应用程序传输到 PICO-8,我试图将其反序列化回 PICO-8 中的 lua 表。
字符串的形式是'{"top", {"one", {"one a", "one b"}}, {"two", {"two a", "two b"}}}'
为了尽量保持简单,我只会在字符串中包含小写字符,并且嵌套表中只允许使用字符串。
我觉得我已经掌握了解析字符,但我不知道如何跟踪我在重新创建的数据中的位置,包括结构的深度和索引。
这通常是怎么做的?
问题是 PICO-8 lua 不包含load
或loadstring
解析必须手动完成。以下代码使用table.insert
andstring.sub
而不是 PICO-8 等效项,因为我正在使用 lua REPL 来帮助创建此代码的原型。
到目前为止,这是我认为我需要在哪里做的打印语句。
任何帮助将不胜感激。
test_obj = {"top", {"one", {"one a", "one b"}}, {"two", {"two a", "two b"}}}
data_string = '{"top", {"one", {"one a", "one b"}}, {"two", {"two a", "two b"}}}'
data = nil
string = ''
level = 0
while #data_string > 0 do
local d=string.sub(data_string,1,1)
if stringChar(d) then
string = string..d
end
if comma(d) then
print(string)
table.insert(data, string)
string = ''
end
if openBracket(d) then
if data == nil then
data = {}
print('new table')
else
print('insert table')
end
level = level + 1
print('on level', level)
end
if closeBracket(d) then
print('end of table')
level = level - 1
print('up to level', level)
end
data_string=string.sub(data_string,2)
end