zoukankan      html  css  js  c++  java
  • lua 对表的简单序列化与反序列化

    参考文档:http://blog.csdn.net/xiaodan007/article/details/7096718

    function sz_T2S(_t)
        local szRet = "{"
        function doT2S(_i, _v)
            if "number" == type(_i) then
                szRet = szRet .. "[" .. _i .. "] = "
                if "number" == type(_v) then
                    szRet = szRet .. _v .. ","
                elseif "string" == type(_v) then
                    szRet = szRet .. '"' .. _v .. '"' .. ","
                elseif "table" == type(_v) then
                    szRet = szRet .. sz_T2S(_v) .. ","
                else
                    szRet = szRet .. "nil,"
                end
            elseif "string" == type(_i) then
                szRet = szRet .. '["' .. _i .. '"] = '
                if "number" == type(_v) then
                    szRet = szRet .. _v .. ","
                elseif "string" == type(_v) then
                    szRet = szRet .. '"' .. _v .. '"' .. ","
                elseif "table" == type(_v) then
                    szRet = szRet .. sz_T2S(_v) .. ","
                else
                    szRet = szRet .. "nil,"
                end
            end
        end
        table.foreach(_t, doT2S)
        szRet = szRet .. "}"
        return szRet
    end
    
    function unsz_S2T(str)
        str = "return " .. str;
        local fun = loadstring(str);
        return fun();
    end
    
    local tt = {}
    tt[1] = "aa";
    tt.name = "halldd";
    tt.tt = {};
    tt.tt[3] = "bb";
    print (tt[1]);
    
    local ss = sz_T2S(tt);
    local ttv = unsz_S2T(ss);
    print (tt.name, tt.tt[3]);
  • 相关阅读:
    C++中dynamic_cas操作符的工作原理
    wcf服务契约的重载
    db2学习笔记
    微软新特性下的异常处理
    任务取消TASK
    socket多文件发送(压缩,解压)
    oracle 表分区例子
    Task构造
    TASK 的使用
    Asp.Net 用户验证(自定义IPrincipal和IIdentity)
  • 原文地址:https://www.cnblogs.com/emyueguang/p/3716765.html
Copyright © 2011-2022 走看看