-- Tabelle in einen String umwandeln, rekursiv -- Funktionen als Lua-Werte werden ignoriert -- forbidden ist ein set von elterntabellen zum erkennen von kreisreferenzen function serialize(value, forbidden) forbidden = forbidden or {} local t=type(value) if t=="table" then -- Kreisreferenz -> als nil serialisieren if forbidden[value] then return "nil" end forbidden[value]=true local r="" local numeric_indexes={} -- Schnellversion fuer numerische Tabellen for k,v in ipairs(value) do numeric_indexes[k]=true r=r..(r=="" and "" or ",")..serialize(v, forbidden) end -- Tabellen-Keys fuer assoziative Tabellen sammeln local tkeys={} for k in pairs(value) do -- Nur Keys, die nicht von ipairs() weiter oben schon verarbeitet wurden if numeric_indexes[k]==nil then table.insert(tkeys, k) end end -- Tabellen-Keys sortieren table.sort(tkeys, function(a,b) return tostring(a)