我想将多层json对象解码为表并打印" temp"的值。
p=666
d=23.42
payload='{"d":
{"pres":'..(p)..',"temp":'..(d)..'}
}'
t = cjson.decode(payload)
我的第一个想法是这样的:
print(t["d"]["temp"])
但是这没用。如何改进此代码以便使用Lua-CJson正确解码?
答案 0 :(得分:2)
您不能在带引号的字符串中使用换行符。
有两种解决方案:
从'...'
删除换行符。
payload='{"d": {"pres":'..(p)..',"temp":'..(d)..'} }'
使用长字符串形式:[[ ... ]
,允许换行。
payload=[[{"d":
{"pres":]]..(p)..',"temp":'..(d)..[[}
}]]
您也可以使用模板,这样可以更清楚:
p=666
d=23.42
payload=[[
{ "d":
{"pres": (p), "temp": (d)}
}'
]]
payload=payload:gsub("%((.-)%)",_G)
print(payload)
如果您的字段不是全局变量,请将它们放在表中并使用该表而不是_G
。