最近的項目開發中發現原有代碼的table2Str函數實現不對,一時偷懶從網上百度了一下。
選中了http://blog.csdn.net/xiaodan007/article/details/7096718這個地址的代碼用到了項目中。
在項目中的使用,將table轉化爲string後,數據有丟失,追蹤,發現是這個實現有問題。
在形如 { {aaa=1},{bbb=2}} 這樣一個table,得出的字符串總是 {{aaa=1}}
- ----------- 個人編寫 -----------------
- --table轉字符串(只取標準寫法,以防止因系統的遍歷次序導致ID亂序)
- 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