method for serializing lua tables

15,109

Solution 1

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

reference here for a simple json serializer.

Solution 2

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.

Solution 3

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

Share:
15,109

Related videos on Youtube

cctan
Author by

cctan

Updated on June 04, 2022

Comments

  • cctan
    cctan almost 2 years

    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.

  • cctan
    cctan about 12 years
    ouch, no wonder lua tables look like json, there was already a library for Corona in here.
  • Hola Soy Edu Feliz Navidad
    Hola Soy Edu Feliz Navidad about 10 years
    I agree with you, Lua is not JS.