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"}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐