table转字符串
function table2JsonString(objTable)
local jsonString = ""
--jsonString = "{"
local t = type(objTable)
if t == "number" then
jsonString = jsonString .. objTable
elseif t == "boolean" then
jsonString = jsonString .. tostring(objTable)
elseif t == "string" then
jsonString = jsonString .. string.format("%q", objTable)
elseif t == "table" then
jsonString = jsonString .. "{"
local tempStr = ""
for k,v in pairs(objTable) do
tempStr = tempStr .. "\"" .. k .. "\":"
tempStr = tempStr .. table2JsonString(v)
tempStr = tempStr .. ","
end
if (string.len(tempStr)>0) then
jsonString = jsonString .. string.sub(tempStr,1,string.len(tempStr)-1)
end
jsonString = jsonString .. "}"
--local metatable = getmetatable(objTable)
--if metatable ~= nil and type(metatable.__index) == "table" then
-- for k,v in pairs(metatable.__index) do
-- jsonString = jsonString .. table2JsonString(v)
-- end
--end
elseif t == "nil" then
jsonString = jsonString .. "null"
else
end
--jsonString = jsonString .. "}"
return jsonString
end
案例
local tbObj = {}
tbObj["boolv"]=true
tbObj["intv"]=1
tbObj["floatv"]=2.3
tbObj["stringv"]="abc"
tbObj["objv"]={}
tbObj["objv"]["boolv"]=false
tbObj["objv"]["intv"]=2
tbObj["objv"]["floatv"]=5.67
tbObj["objv"]["stringv"]="substring"
print("="..table2JsonString(tbObj))
结果为
={"boolv":true,"objv":{"stringv":"substring","intv":2,"floatv":5.67,"boolv":false},"intv":1,"floatv":2.3,"stringv":"abc"}