способ сериализации таблиц lua
возможно, я пропустил это, но есть ли встроенный метод сериализации/десериализации таблиц lua в текстовые файлы и наоборот?
у меня была пара методов для этого в таблице lua с фиксированным форматом (например, 3 столбца данных с 5 строками).
есть ли способ сделать это на таблицах lua с любым произвольные?
для примера, учитывая эту таблицу lua:
local scenes={
{name="scnSplash",
obj={
{
name="bg",
type="background",
path="scnSplash_bg.png",
},
{
name="bird",
type="image",
path="scnSplash_bird.png",
x=0,
y=682,
},
}
},
}
Он будет преобразован в текст, как это:
{name="scnSplash",obj={{name="bg",type="background",path="scnSplash_bg.png",},{name="bird", type="image",path="scnSplash_bird.png",x=0,y=682,}},}
формат сериализованного текста может быть определен любым способом, если текстовая строка может быть десериализована в пустую таблицу lua.
3 ответов
Я не уверен, почему библиотека JSON была отмечена как правильный ответ, поскольку она кажется очень ограниченной в сериализации "таблиц lua с любым произвольным форматом". Он не обрабатывает логические/табличные / функциональные значения в качестве ключей и не обрабатывает циклические ссылки. Общие ссылки не сериализуются как общие и math.huge
значения не сериализуются правильно в Windows. Я понимаю, что большинство из них являются ограничениями JSON (и, следовательно, реализованы таким образом в библиотеке), но это было предложено в качестве решения для общей сериализации таблицы Lua (которой она не является).
было бы лучше использовать одну из реализаций из TableSerialization страница или мой Серпент сериализатор и довольно-принтер.
только Lua не имеет такого встроенного, но реализовать его не сложно. Здесь перечислены несколько готовых реализаций:http://lua-users.org/wiki/TableSerialization
require "json"
local t = json.decode( jsonFile( "sample.json" ) )
ссылка здесь для простого сериализатора json.