Domanda

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.

È stato utile?

Soluzione 3

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

reference here for a simple json serializer.

Altri suggerimenti

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.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top