method for serializing lua tables

走远了吗. 提交于 2019-12-01 15:59:18

问题


I may have missed this, but is there a built-in method for serializing/deserializing lua tables to text files and vice versa?

I had a pair of methods in place to do this on a lua table with fixed format (e.g. 3 columns of data with 5 rows).

Is there a way to do this on lua tables with any arbitrary format?

For an example, given this lua table:

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,
            },
        }
    },
}

It would be converted into text like this:

{name="scnSplash",obj={{name="bg",type="background",path="scnSplash_bg.png",},{name="bird",  type="image",path="scnSplash_bird.png",x=0,y=682,}},}

The format of the serialized text can be defined in any way, as long as the text string can be deserialized into an empty lua table.


回答1:


I'm not sure why JSON library was marked as the right answer as it seems to be very limited in serializing "lua tables with any arbitrary format". It doesn't handle boolean/table/function values as keys and doesn't handle circular references. Shared references are not serialized as shared and math.huge values are not serialized correctly on Windows. I realize that most of these are JSON limitations (and hence implemented this way in the library), but this was proposed as a solution for generic Lua table serialization (which it is not).

One would be better off by using one of the implementations from TableSerialization page or my Serpent serializer and pretty-printer.




回答2:


Lua alone doesn't have any such builtin, but implementing one is not difficult. A number of prebaked implementations are listed here: http://lua-users.org/wiki/TableSerialization




回答3:


require "json"
local t = json.decode( jsonFile( "sample.json" ) )

reference here for a simple json serializer.



来源:https://stackoverflow.com/questions/9074246/method-for-serializing-lua-tables

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!